在做项目中上传下载肯定是少不了的,本博文对struts2的下载进行解释并附上部分代码

1、action类

public class FileDownLoadAction extends ActionSupport{
private String filename;//下载文件的名称 @Override
public String execute() throws Exception {
return SUCCESS;
}
//下载源
public InputStream getInputStream() throws IOException{
String path =ServletActionContext.getServletContext().getRealPath(filename);//获取文件路径
//System.out.println("path="+path);
File file = new File(path);
return FileUtils.openInputStream(file);
}
//下载文件名
public String getDownloadFileName() throws Exception{
String downloadFileName="";
String []filenames=filename.split("/");
//System.out.println(filenames[filenames.length-1]);
downloadFileName=URLEncoder.encode(filenames[filenames.length-1], "UTF-8");//解决下载中文命名文件乱码问题
return downloadFileName;
}
///////////////////////////////////////////字段封装//////////////
public String getFilename() {
return filename;
}
public void setFilename(String filename) {
this.filename = filename;
}
}

2、struts2.xml配置

<action name="download" class="com.zzuli.student.action.FileDownLoadAction">
<!--以流的方式返回 -->
<result name="success" type="stream">
<!--文件流 -->
<param name="contentType">application/octet-stream</param>
<!--下载源 -->
<param name="inputName">InputStream</param>
<!--以附件方式下载 downloadFileName相应Action类getDownloadFileName() -->
<param name="contentDisposition">attachment;filename="${downloadFileName}"</param>
<!--缓冲流大小 -->
<param name="bufferSize">8192</param>
</result>

3、jsp下载链接页面

<td>
<a href="download.action?filename=${documentUrl}">点击下载</a>
</td>

具体具体解释请查看Struts官方文档


最新文章

  1. [moka同学收藏]Vim升华之树形目录插件NERDTree安装图解
  2. javascript中call函数与apply
  3. 欢迎你,phpWeChat 开发者
  4. iOS开发--关于TableViewCell的可视化设置细节
  5. css3 @font-face设置嵌入字体
  6. MYSQL基本操作语句
  7. [OpenCV] Image Processing - Fuzzy Set
  8. iOS开发之 XCode6.0的iOS免证书真机测试方法(MAC及黑苹果均有效)
  9. JavaScript--正则表达式(笔记)
  10. [转载]MongoDB开发学习(1)开天辟地,经典入门
  11. Python安装、配置
  12. 04747_Java语言程序设计(一)_第8章_多线程
  13. 【IOS开发】搜索和排序(好友列表,通讯录的实现,searchbar)
  14. split和join函数的比较
  15. Linux基础四
  16. Mysql--执行计划 Explain
  17. 【Java基础】【19异常&amp;IO(File类)】
  18. Calendar 使用
  19. 深入学习c++(虚函数遇到析构函数就退化了)
  20. 20164322韩玉婷 -----Exp1 PC平台逆向破解

热门文章

  1. 使用Azure Docker容器注册表服务
  2. Linux Shell Scripting Cookbook 读书笔记 3
  3. mysql 登录与权限
  4. 使用数组实现ArrayList的效果
  5. 由于找不到 opencv_world320.dll,无法继续执行代码
  6. Ssh safe
  7. JavaScript实现复选框的全选、不选、反选
  8. 单元测试工具 unitils
  9. logging模块、shutil模块、subprocess模块、xml模块
  10. springboot版本控制