struts2 实现文件上传:
Action 代码:
package com.action;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class FileUploadAction extends BaseAction{ /** * */ private static final long serialVersionUID = 1L; /** * 上传后存放在临时文件夹里的文件 */ private File file; /** * 文件名称 */ private String fileFileName; /** * 文件的MIME类型 */ private String fileContentType; /** * 保存的路径 */ private String savePath; public String getSavePath() { return savePath; } public void setSavePath(String savePath) { this.savePath = savePath; } public File getFile() { return file; } public void setFile(File file) { this.file = file; } public String getFileFileName() { return fileFileName; } public void setFileFileName(String fileFileName) { this.fileFileName = fileFileName; } public String getFileContentType() { return fileContentType; } public void setFileContentType(String fileContentType) { this.fileContentType = fileContentType; } public String execute() throws Exception { String root = ServletActionContext.getServletContext().getRealPath(savePath); InputStream is = new FileInputStream(file); OutputStream os = new FileOutputStream(new File(root, fileFileName)); byte[] buffer = new byte[500]; @SuppressWarnings("unused") int length = 0; while(-1 != (length = is.read(buffer, 0, buffer.length))) { os.write(buffer); } os.close(); is.close(); return SUCCESS; } }
struts2.xml配置信息:
/upload //注意在当前工程里建一个 upload文件夹 /login.jsp
文件上传的 jsp 页面:
struts2实现文件下载源码:支持中文文件名
注意:下载文件的大小设置问题,默认是2M. 可以在struts.properties 设置 struts.multipart.maxSize=10485760 (10M 大小根据自己情况)
action 的代码:
package com.action;import java.io.IOException;import java.io.InputStream;import org.apache.struts2.ServletActionContext;public class FileDownloadAction extends BaseAction{ /** * */ private static final long serialVersionUID = 1L; /** * 文件名称 */ private String fileName; public String getFileName() throws IOException { return new String(fileName.getBytes(), "ISO8859-1"); //转码 使其支持中文,不然无法显示文件名的中文字符 } public void setFileName(String fileName) { this.fileName = fileName;; } public InputStream getInputStream() throws Exception{ return ServletActionContext.getServletContext().getResourceAsStream( fileName); } public String execute()throws Exception{ return SUCCESS; }}
下载的 struts2.xml配置信息:
attachment;fileName="${fileName}" application/octet-stream;charset=ISO8859-1 InputStream //InputStream 是有Action中的 getInputStream()方法 去掉get而定的,要一致 10485760//文件大小(10M)
jsp页面:
点击下载
版权声明:本文为博主原创文章,未经博主允许不得转载。