Struts2 下载文件
使用框架:Struts2
(1)pom.xml配置
<properties> <java.version>1.6</java.version> <tomcat.version>7.0.26</tomcat.version> <struts2.version>2.3.4.1</struts2.version> <spring.version>3.2.3.RELEASE</spring.version> </properties> <dependencies> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>${struts2.version}</version> <exclusions> <exclusion> <artifactId>tools</artifactId> <groupId>com.sun</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-json-plugin</artifactId> <version>${struts2.version}</version> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-spring-plugin</artifactId> <version>2.3.14.3</version> </dependency>
(2)Struts配置文件
<!-- 下载指定的单个文件 --> <action name="downloadOneFile" class="downloadOneFileAction"> <!-- 上传大小限制见struts主配置文件中的常量 struts.multipart.maxSize --> <result type="stream" name="success"> <param name="inputName">downloadFile</param> <param name="contentType">application/x-zip-compressed</param> <param name="contentDisposition">attachment;filename=${filename}</param> <param name="bufferSize">4096000</param> </result> </action>
注意:result的type属性值必须是stream
(3)action
package com.shop.jn.action.upload; import java.io.BufferedInputStream; import java.io.File; import java.io.InputStream; import org.apache.struts2.ServletActionContext; import com.common.action.upload.SUploadAction; import com.common.util.ZipUtil; import com.io.hw.file.util.FileUtils; import com.shop.jn.entity.FileLinuxBean; import com.shop.jn.util.ShopUtils; import com.string.widget.util.ValueWidget; /*** * 下载单个文件. * * @author huangwei * */ public class DownloadOneFileAction extends SUploadAction { private static final long serialVersionUID = -3547982986077322220L; /** * 单独下载zip中的文件时为null */ private String filename; // private String filepa; private String fileInZip; private int fileId; /*** * 不是绝对路径,只是文件名 */ private String zipFilename; private boolean isFileInzip; public InputStream getDownloadFile() throws Exception { FileLinuxBean bean=null; try { bean = ShopUtils.getFileLinuxBean(fileId); } catch (NullPointerException e) { e.printStackTrace(); return null; } String filepa = bean.getFilepath(); if (isFileInzip) {// 下载zip中的文件 this.filename = fileInZip.substring(fileInZip.indexOf("/") + 1); return ZipUtil.getInputStreamFromZip(new File(filepa), fileInZip); } else {// 下载upload 中的文件 this.filename = bean.getFilename(); BufferedInputStream in = FileUtils .getBufferedInputStreamFromFile(filepa);// SystemUtil.convertISO2UTF( int length = in.available(); System.out.println("stream length:" + length); ServletActionContext.getResponse().addHeader("Content-Length", String.valueOf(length)); return in;// filepath } } public String execute() throws Exception { // System.out.println("download:" + filename); // if (StringUtils.isEmpty(this.filename)) { // this.filename = SystemUtil.getFileSimpleName(filepa); // } return SUCCESS; } public String getFilename() { return filename; } public void setFilename(String filename) { this.filename = filename; } public boolean isFileInzip() { return isFileInzip; } public void setIsFileInzip(boolean isFileInzip) { this.isFileInzip = isFileInzip; } public String getZipFilename() { return zipFilename; } public void setZipFilename(String zipFilename) { this.zipFilename = zipFilename; } public int getFileId() { return fileId; } public void setFileId(int fileId) { this.fileId = fileId; } public String getFileInZip() { return fileInZip; } public void setFileInZip(String fileInZip) { this.fileInZip = fileInZip; } }
注意:Struts配置文件中inputName 的值为downloadFile,所以action中有downloadFile 的getter方法
相关推荐
struts2下载文件
struts2官方文档
使用struts2实现文件下载功能,可以直接运行!
Struts2下载文件时中文乱码和空格处理
在struts2基础上实现的包括单文件、多文件的上传及下载
struts2中的文件上传和下载: 1.首先导入commons-fileupload-1.2.1.jar和commons-io-1.4.jar两个jar包 2.其次JSP页面中的文件上传控件所在的form必须设置属性enctype="multipart/form-data" 3.再次,struts2中...
Struts2 下载文件不同浏览器兼容问题,实现不同浏览器下载文件名是action名的问题
struts2中实现文件上传 struts2中实现CRUD struts2中的OGNL struts2的新表单标志的使用 struts2与AJAX一 struts2与AJAX二 struts2与AJAX三 struts2中用Spring实现IOC struts2中的零配置与IOC struts2介绍之使用连接...
Struts2 Struts2 超好的Struts2 pdf 文档 Struts2 Struts2 超好的Struts2 pdf 文档 Struts2.pdf文档
网上很多有关struts2的api文档都是不全的。我经过精心整理出的struts2api文档,非常齐全。
在我们做struts2文件下载的时候,经常会遇到这种问题:点“打开/保存”一切正常,但当我们点击“取消”时,却报一堆的异常(其中包括ClientAbortException异常),非常让人头疼,如何彻底解决呢?附件中使用struts2-...
struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置...
struts2的根本webwork2
在struts官网下的struts2中没有帮助文档,几经周折找到的API文档,包括了struts中常用jar包(struts2-core,xwork-core等)!
struts2文件上传和下载 struts2文件上传和下载 struts2文件上传和下载 struts2文件上传和下载 struts2文件上传和下载
Struts2的开发文档,学习Struts2时可以用来查阅API相关接口说明,便于分析框架原理
struts2文件下载极其简单struts2文件下载极其简单struts2文件下载极其简单struts2文件下载极其简单
Struts2 开发者文档 api
使用struts2框架进行文件的上传并限制文件的大小与类型,使用struts2框架实现文件下载
Struts2 api文档