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

你可能感兴趣的文章
Eclipse之CTRL+左键直接进入方法函数Implementation
查看>>
groovy/java自实现json解析器(2)JsonObject
查看>>
Linux IP_FORWARD introduce
查看>>
ThinkPHP getBy查询
查看>>
几条简单SQL的系统级抽象
查看>>
Android图片压缩(质量压缩和尺寸压缩)
查看>>
nilfs (a continuent snapshot file system) used with PostgreSQL
查看>>
【SICP练习】150 练习4.6
查看>>
Shell脚本 使用sed流编辑器一键修改CentOS网卡IP地址
查看>>
java反射详解
查看>>
Rsync使用注意事项
查看>>
沐风老师3dsMax手把手教系列:椅子建模(款式001)
查看>>
Mac Tomcat 安装与配置
查看>>
自己写中文分词之(二)_用HMM模型实现分词
查看>>
java开发过程中的命名规范
查看>>
Linux系统启动过程及其修复过程简析(CentOS5、6)
查看>>
CentOS 7 防火墙设置
查看>>
RHEL java 环境变量
查看>>
关于embedded linux的使用、开发、学习的一点自已的体会
查看>>
找到一部不错的c语言学习教程
查看>>