博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
struts2 实现文件上传下载 (下载支持中文文件名)代码
阅读量:6064 次
发布时间:2019-06-20

本文共 3164 字,大约阅读时间需要 10 分钟。

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 页面:

file:

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页面:

点击下载

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/lovelyx/p/4867115.html

你可能感兴趣的文章
Android反编译(一) 之反编译JAVA源码
查看>>
结合当前公司发展情况,技术团队情况,设计一个适合的技术团队绩效考核机制...
查看>>
我的友情链接
查看>>
python-45: opener 的使用
查看>>
cad图纸转换完成的pdf格式模糊应该如何操作?
查看>>
Struts2与Struts1区别
查看>>
网站内容禁止复制解决办法
查看>>
Qt多线程
查看>>
我的友情链接
查看>>
Ubuntu12.04 编译android源代码及生成模拟器经历分享
查看>>
KVM网络桥接设置方法
查看>>
Puppet学习手册:Puppet Yum安装
查看>>
我的友情链接
查看>>
ansible学习记录
查看>>
网思科技校园网计费解决方案
查看>>
我的友情链接
查看>>
携程 Apollo分布式部署
查看>>
2017 Hackatari Codeathon B. 2Trees(深搜)(想法)
查看>>
单词统计
查看>>
输入一个数字计算圆的面积
查看>>