java action文件下载_java和Struts2实现文件下载和上传详解

fff6c98081bf8904098fb5e1bd59ff4b.gif

本程序是通过java和struts2先实现把文件上传到服务器或者是存储到硬盘,然后把该文件下载下来:

一:首先是struts2配置文件:result返回类型一定要写成type="stream"

text/plain

attachment;fileName="${fileName}"

downloadFile

1024

二:然后是action类:

package upload.action;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

//文件下载

public class FileDownload extends ActionSupport{

private static final long serialVersionUID = 1L;

private String fileName;

private int number;

public InputStream getDownloadFile() throws Exception{

int number=1;

//从这是把数据写入到文档中------- 开始

String str="afsdasdfasdfadfaaaaaaaaaaaaaaafasdfasdfasdfasfasdfasdfasdf!";

File txt=new File("D:/attachment/report/Test.txt");

if(!txt.exists()){//如果不存在就创建一个文件

txt.createNewFile();

}

byte bytes[]=new byte[512];

bytes=str.getBytes();

int b=str.length();

FileOutputStream fos=new FileOutputStream(txt);

fos.write(bytes,0,b);//通过流写入硬盘

fos.close();

//从这是把数据写入到文档中------- 结束

//从这是把上面存到硬盘的文件下载下来-------- 开始

String path = "D:/attachment/";

//if(number == 1){

path += "report/";

//}

// String aId = ServletActionContext.getRequest().getParameter("attachId");//保存的id

//List attaList = attachmentService.findAttachmentById(aId);

//Attachment attachment = attaList.get(0);

//String aName=attachment.getGeneratedfilenamedirectory();

String aName="Test.txt";

//String fileName=attachment.getOriginalname();

String fileName="Test.txt";

// 如果下载文件名为中文,进行字符编码转换

ServletActionContext.getResponse().setHeader("Content-Disposition","attachment;fileName="+ new String(fileName.getBytes("gb2312"), "ISO8859-1" ));

File file = new File(path+aName);

if(!file.exists()){

return null;

}

InputStream inputStream = new FileInputStream(file);

return inputStream;

//从这是把上面存到硬盘的文件下载下来-------- 结束

}

@Override

public String execute() throws Exception {

return SUCCESS;

}

}

三:action调用,在前台直接写action地址:

window.location.href="${pageContext.request.contextPath }/download_execute.action;

fff6c98081bf8904098fb5e1bd59ff4b.gif

转载请注明来源网站:www.itxm.cn谢谢!

分享到:

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值