Struts2--文件上传与下载
2017-07-05 02:25
417 查看
1 文件上传
页面:
请求处理类:
struts.xml配置:
多个文件上传即为File数组。
页面:
请求处理类:
struts.xml配置:
2 文件的下载:
2.1 获取response,通过输入输出来下载文件。
请求处理器
配置信息
2.2 未知的方式。
请求处理类
配置信息
页面:
<body> <!-- 必须是post的方式 --> <form action="upload.action" method="post" enctype="multipart/form-data"> 文件:<input type="file" name="file"/> <input type="submit" value="上传"/> </form> </body>
请求处理类:
public class UploadAction extends ActionSupport { //对应JSP页面中的name="file" private File file; //文件名,必须加 private String fileFileName; //文件的类型,必须加 private String fileContentType; private InputStream is; private OutputStream os; public String upload() throws IOException{ HttpServletRequest request=ServletActionContext.getRequest(); String path=request.getRealPath("/upload");//获取项目目录下的upload目录的路径 try { is=new FileInputStream(file); os=new FileOutputStream(new File(path,fileFileName));//创建目录和创建文件 } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } byte[] buffer=new byte[200]; int len=0; while((len=is.read(buffer))!=-1){ os.write(buffer, 0, len); } os.close(); is.close(); return Action.SUCCESS; } 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; } } 页面中的name属性设置的值与类中的属性名称一一对应。 request.getRealPath("/upload");//获取项目目录下的upload目录的路径,将上传的文件放在该upload中。
struts.xml配置:
<struts> <!-- 设置临时目录 --> <constant name="struts.multipart.saveDir" value="E:/Docum"></constant> <!-- 设置上传文件的最大大小必须大于等于maximumSize --> <constant name="struts.multipart.maxSize" value="20971520"></constant> <package name="default" extends="struts-default" namespace="/"> <action name="upload" class="cn.sxt.action.UploadAction" method="upload"> <result>/index.jsp</result> <!-- 拦截器 --> <interceptor-ref name="fileUpload"> <!-- 设置文件最大值 --> <param name="maximumSize">20971520</param> </interceptor-ref> <interceptor-ref name="defaultStack"/> </action> </package> </struts>
多个文件上传即为File数组。
页面:
<link rel="stylesheet" type="text/css" href="styles.css"> <script type="text/javascript" src="js/jquery-3.0.0.min.js"></script> <script type="text/javascript"> $(function(){ $('#btn').click(function(){ var field="<p><input type='file' name='file'/><input type='button' value='删除' onclick='removed(this);'/></p>" $('#files').append(field); }); }); function removed(o){ $(o).parent().remove(); } </script> </head> <body> <!-- 必须是post的方式 --> <form action="upload.action" method="post" enctype="multipart/form-data"> 文件:<input type="file" name="file"/><input type="button" id="btn" value="添加"> <div id="files"></div> <input type="submit" value="上传"/> </form> </body>
请求处理类:
package cn.sxt.action; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.Action; public class BatchUploadAction { private File[] file; private String[] fileFileName; private String[] fileContentType; public String execute() throws IOException { HttpServletRequest request = ServletActionContext.getRequest(); String path = request.getRealPath("/upload"); for (int i = 0; i < file.length; i++) { InputStream is = new FileInputStream(file[i]); OutputStream os = new FileOutputStream(new File(path, fileFileName[i])); byte[] buffer = new byte[200]; int len = 0; while ((len = is.read(buffer)) != -1) { os.write(buffer, 0, len); } os.close(); is.close(); } return Action.SUCCESS; } 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; } }
struts.xml配置:
<action name="batch" class="cn.sxt.action.BatchUploadAction"> <result>/index.jsp</result> <interceptor-ref name="fileUpload"> <param name="maximumSize">20971520</param> </interceptor-ref> <interceptor-ref name="defaultStack"/> </action>
2 文件的下载:
2.1 获取response,通过输入输出来下载文件。
请求处理器
public class DownloadAction { public String execute() throws IOException{ HttpServletRequest req=ServletActionContext.getRequest(); HttpServletResponse resp=ServletActionContext.getResponse(); //获取路径 String path=req.getRealPath("/download"); File file=new File(path,"dema1.txt"); resp.setContentLength((int)file.length()); resp.setCharacterEncoding("utf-8"); resp.setContentType("application/octet-stream"); resp.setHeader("Content-Disposition","attachment;filename='dema1.txt'"); byte[] buffer=new byte[400]; int len; InputStream is=new FileInputStream(file); OutputStream os=resp.getOutputStream(); while((len=is.read(buffer))!=-1){ os.write(buffer, 0, len); } os.close(); is.close(); return null; } }
配置信息
<!-- 当action处理的方法返回空是不用配置结果集 --> <action name="download" class="cn.sxt.action.DownloadAction"> </action>
2.2 未知的方式。
请求处理类
public class StreamDownloadAction { private String fileName; public String execute(){ return Action.SUCCESS; } public InputStream getInputStream() throws IOException{ be74 HttpServletRequest req=ServletActionContext.getRequest(); //获取路径 String path=req.getRealPath("/download"); return new FileInputStream(new File(path,fileName)); } public String getFileName() { return fileName; } public void setFileName(String fileName) { this.fileName = fileName; } }
配置信息
<action name="streamDownload" class="cn.sxt.action.StreamDownloadAction"> <result type="stream"> <param name="inputName">inputStream</param> <param name="contentDisposition">attachment;filename=${fileName}</param> </result> </action>
相关文章推荐
- struts2学习笔记(11)——struts2文件上传与下载
- struts2文件上传下载
- struts2 文件上传和下载,以及部分源码解析
- Struts2 多文件上传下载
- Struts2之实现文件上传与下载
- Struts2学习笔记16:Struts2的文件上传和下载【续】三
- Struts2文件的上传和下载
- Struts2文件的上传和下载
- Struts2文件上传和下载
- Struts2文件的上传和下载
- Struts2文件的上传和下载
- struts2文件的上传和下载功能
- Struts2 多个文件上传和下载(支持中文文件名)
- 【原创】Struts2学习笔记之文件的上传与下载
- Struts2学习笔记13:Struts2的文件上传和下载
- Struts2文件上传与下载
- Struts2学习笔记14:Struts2的文件上传和下载【续】
- [转载] 第六章 struts2文件上传与下载
- Struts2文件上传与下载
- struts2 文件上传与下载原理