struts 上传下载的问题

<constant name= "struts.multipart.maxSize" value="1073741824" />配置上传最大限制为1g

 

 

下载配置

    <action name="download" class="download">
 
   
   <result name="success" type="stream">
   
   <param name="contentType">application/octet-stream;charset=ISO8859-1</param>
   
   <param name="inputName">inputStream</param>
   
   <!-- 使用经过转码的文件名作为下载文件名,downloadFileName属性
   
   对应action类中的方法 getDownloadFileName() -->
   
   <param name="contentDisposition">attachment;filename="${downloadFileName}"</param>
   
   <param name="bufferSize">4096</param>
   
   </result>

  </action>

action代码

package com.fenhe.jbpm.actions;

import java.io.InputStream;

import java.io.UnsupportedEncodingException;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.Action;

public class FileDownloadAction implements Action {

 private String fileName;// 初始的通过param指定的文件名属性

 private String inputPath;// 指定要被下载的文件路径

 public InputStream getInputStream() throws Exception {

  // 通过 ServletContext,也就是application 来读取数据

  return ServletActionContext.getServletContext().getResourceAsStream(
    inputPath);

 }

 public String execute() throws Exception {

  // 文件下载目录路径

  String downloadDir = ServletActionContext.getServletContext().getRealPath("/upload");

  // 文件下载路径

  String downloadFile = ServletActionContext.getServletContext().getRealPath(inputPath);

  java.io.File file = new java.io.File(downloadFile);

  downloadFile = file.getCanonicalPath();// 真实文件路径,去掉里面的..等信息

  // 发现企图下载不在 /download 下的文件, 就显示空内容

  if(!downloadFile.startsWith(downloadDir)) {

  return null;

  }

  return SUCCESS;

 

 }

 public void setInputPath(String value) {

  try {
   inputPath = new String(value.getBytes("ISO8859-1"),"GBK");
  } catch (UnsupportedEncodingException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

 }

 public void setFileName(String fileName) {

  try {
   this.fileName = new String( fileName.getBytes("ISO8859-1"),"GBK");
  } catch (UnsupportedEncodingException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

 }

 /** 提供转换编码后的供下载用的文件名 */

 public String getDownloadFileName() {

  String downFileName = fileName;

  try {

   downFileName = new String(downFileName.getBytes(), "ISO8859-1");

  } catch (UnsupportedEncodingException e) {

   e.printStackTrace();

  }

  return downFileName;

 }

}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值