以下代码是struts1中的action中
一般下载有三种方式,我常用的是这两种,做个记录
String dlpath = request.getParameter("dlpath");//文件相对路径
if(dlpath == null || "".equals(dlpath.trim())){
return null;
}
//得到下载文件名
//可能还会查询数据库中当初保存时的名字
String fileName = "";
if(dlpath.lastIndexOf("/") > 0) {
fileName = new String(dlpath.substring(dlpath.lastIndexOf("/")+1, dlpath.length()).getBytes("GB2312"), "ISO8859_1");
}else if(dlpath.lastIndexOf("\\") > 0) {
fileName = new String(dlpath.substring(dlpath.lastIndexOf("\\")+1, dlpath.length()).getBytes("GB2312"), "ISO8859_1");
}
response.reset();
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition", "attachment; filename=\""+fileName + "\"");
//=================第一种,相对最简单=====================
RequestDispatcher dispatcher = request.getRequestDispatcher(dlpath);
if(dispatcher != null){
dispatcher.forward(request,response);
}
response.flushBuffer();
//=================/第一种===============================
//=================第二种,输入/出流方式=====================
// File uploadFile = new File(request.getSession().getServletContext().getRealPath(dlpath));
// InputStream is = new FileInputStream(uploadFile);
// BufferedInputStream bis = new BufferedInputStream(is);
// OutputStream os = response.getOutputStream();
// BufferedOutputStream bos = new BufferedOutputStream(os);
//
// int bytesRead = 0;
// byte[] buffer = new byte[2048];
// while((bytesRead = bis.read(buffer,0,2048)) != -1){
// bos.write(buffer, 0, bytesRead);
// }
// bos.flush();
// is.close();
// bis.close();
// os.close();
// bos.close();
//==================/第二种============================================
return null ;
注意:
dlpath要以/开头,dispatcher才正确
response的设置和流的关闭,在struts action里的话,一定最后要返回null,因为在第一种方法里,dispatcher.forward后,不返回null,框架再返回就会出错,response已关闭
分享到:
相关推荐
博文链接:https://ychw668.iteye.com/blog/122843
一个简单好用的struts文件下载实例,内有详细注解,希望能帮到大家
一个简的struts文件下载方法,比较简单,有实现代码和详细步骤!
本程序使用的是Struts技术,实现了文件的上传和下载
使用struts2实现文件下载功能,可以直接运行!
STRUTS中文文档STRUTS中文文档
struts2官方文档
在struts2基础上实现的包括单文件、多文件的上传及下载
简述struts2的各个知识点
struts实现的文件上传下载功能,最大可以上传到150MB
struts2文件下载极其简单struts2文件下载极其简单struts2文件下载极其简单struts2文件下载极其简单
Struts文件的上传和下载Struts文件的上传和下载Struts文件的上传和下载
Struts中文文档
struts2文件上传和下载 struts2文件上传和下载 struts2文件上传和下载 struts2文件上传和下载 struts2文件上传和下载
使用struts1实现文件上传和下载,上传有单文件上传,多文件上传,动态添加上传文件域。
Struts2下载文件时中文乱码和空格处理
解决中文文件名问题,使用解决方法,文件名编码:ISO8859-1
http://blog.csdn.net/johnjobs/article/details/8076832博文中附件的下载链接
使用struts2框架进行文件的上传并限制文件的大小与类型,使用struts2框架实现文件下载
struts文件的下载