struts实现文件上传下载
2016-06-12 18:27
429 查看
1.jsp中表单实现上传
4.DownAction extends ActionSupport----------------------实现单文件下载
点击链接,发送action,给过滤器获取fileName=${fileName} 可执行文件application/octet-stream
3. UploadAction extends ActionSupport----------- 单文件上传
upload和表单的name值相同 uploadContentType文件类型 uploadFileName文件名字 命名规范------------------- savepath在action中定义,存放至服务器端的文件夹名字
5.多文件上传 MutiUploadAction extends ActionSupport
单文件:upload和表单的name值相同 uploadContentType文件类型 uploadFileName文件名字 savepath在action中定义,存放至服务器端的文件夹名字
多文件: File[] upload和表单的name值相同 String[] uploadContentType文件类型 String[] uploadFileName文件名字 savepath在action中定义
<s:form enctype="multipart/form-data" method="post" theme="simple"action="upload.action"> 选择文件一: <s:file name="upload"></s:file> 选择文件二: <s:file name="upload"></s:file><s:submit
value="上传"></s:submit></s:form>
<body> <s:form enctype="multipart/form-data" method="post" theme="simple" action="upload.action"> 选择文件一: <s:file name="upload"></s:file><s:submit value="上传"></s:submit>
</s:form> </body>2.过滤器截取,到达配置文件,调用UploadAction
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <constant name="struts.custom.i18n.resources" value="message"></constant> <package name="default" namespace="/" extends="struts-default"> <!-- 单个文件上传 --> <action name="upload" class="com.yh.struts.action.UploadAction"> <param name="savepath">pic</param> <result>/success.jsp</result> </action> <!-- 多文件上传 --> <action name="mupload" class="com.yh.struts.action.MutiUploadAction"> <param name="savepath">pic</param> <result>/success.jsp</result> </action> <!-- 文件下载 --> <action name="down" class="com.yh.struts.action.DownAction"> <param name="path">upload</param><!-- 下载文件路径:业务action中的属性 --> <result type="stream"> <param name="contentType">application/octet-stream</param> <param name="contentDisposition">attachment;fileName=${fileName}</param> <param name="inputName">inputStream</param> </result> </action> </package> </struts>
4.DownAction extends ActionSupport----------------------实现单文件下载
点击链接,发送action,给过滤器获取fileName=${fileName} 可执行文件application/octet-stream
<body> <a href="down.action?fileName=1.png">下载此文件</a> </body>
</pre>//<span style="white-space:pre"> </span><action name="down" class="com.yh.struts.action.DownAction">//<span style="white-space:pre"> </span> <param name="path">upload</param><!-- 下载文件路径:业务action中的属性 -->//<span style="white-space:pre"> </span> <result type="stream">//<span style="white-space:pre"> </span> <param name="contentType">application/octet-stream</param>//<span style="white-space:pre"> </span> <param name="contentDisposition">attachment;fileName=${fileName}</param>//<span style="white-space:pre"> </span> <param name="inputName">inputStream</param>//<span style="white-space:pre"> </span> </result>//<span style="white-space:pre"> </span></action> <p></p><p></p><p></p><pre name="code" class="java">import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; public class DownAction extends ActionSupport { private String fileName; private String path; private InputStream inputStream; public String getFileName() { return fileName; } public void setFileName(String fileName) { this.fileName = fileName; } public String getPath() { return path; } public void setPath(String path) { this.path = path; } public InputStream getInputStream() { String filePath = ServletActionContext.getServletContext().getRealPath(path)+ "/" + this.getFileName();
//C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\struts04\upload/1.png try { return new FileInputStream(filePath); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } } public void setInputStream(InputStream inputStream) { this.inputStream = inputStream; } }
3. UploadAction extends ActionSupport----------- 单文件上传
upload和表单的name值相同 uploadContentType文件类型 uploadFileName文件名字 命名规范------------------- savepath在action中定义,存放至服务器端的文件夹名字
</pre><p></p><p></p><pre name="code" class="java"><pre name="code" class="java">import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class UploadAction extends ActionSupport { private File upload;// File ��ҳ���пؼ���name��ͬ private String uploadContentType;// �ؼ���ContentType:�ϴ��ļ����� private String uploadFileName;// �ؼ���FileName:�ϴ��ļ����� private String savepath;//������������ϴ��ļ����ļ������ public String getSavepath() { return savepath; } public void setSavepath(String savepath) { this.savepath = savepath; } public File getUpload() { return upload; } public void setUpload(File upload) { this.upload = upload; } public String getUploadContentType() { return uploadContentType; } public void setUploadContentType(String uploadContentType) { this.uploadContentType = uploadContentType; } public String getUploadFileName() { return uploadFileName; } public void setUploadFileName(String uploadFileName) { this.uploadFileName = uploadFileName; } public String execute() { FileInputStream fis = null; FileOutputStream fos = null; try { fis = new FileInputStream(upload); fos = new FileOutputStream(ServletActionContext.getServletContext() .getRealPath("/") + this.getSavepath()+"/" + this.getUploadFileName()); byte[] b = new byte[fis.available()]; fis.read(b); fos.write(b); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { if (fis != null) fis.close(); if (fos != null) fos.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return SUCCESS; } }
5.多文件上传 MutiUploadAction extends ActionSupport
单文件:upload和表单的name值相同 uploadContentType文件类型 uploadFileName文件名字 savepath在action中定义,存放至服务器端的文件夹名字
多文件: File[] upload和表单的name值相同 String[] uploadContentType文件类型 String[] uploadFileName文件名字 savepath在action中定义
<s:form enctype="multipart/form-data" method="post" theme="simple"action="upload.action"> 选择文件一: <s:file name="upload"></s:file> 选择文件二: <s:file name="upload"></s:file><s:submit
value="上传"></s:submit></s:form>
</pre><p><span style="white-space:pre"> </span><!-- 多文件上传 --><span style="white-space:pre"> </span><action name="mupload" class="com.yh.struts.action.MutiUploadAction"><span style="white-space:pre"> </span> <param name="savepath">pic</param><span style="white-space:pre"> </span> <result>/success.jsp</result><span style="white-space:pre"> </span></action></p><p></p><p><pre name="code" class="java">import java.io.File; import java.io.FileInputStream; import java.io.FileNotFou 4000 ndException; import java.io.FileOutputStream; import java.io.IOException; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class MutiUploadAction extends ActionSupport { private File[] upload;// File ��ҳ���пؼ���name��ͬ private String[] uploadContentType;// �ؼ���ContentType:�ϴ��ļ����� private String[] uploadFileName;// ������FileName:�ϴ��ļ����� private String savepath;// ������������ϴ��ļ����ļ������ public String getSavepath() { return savepath; } public void setSavepath(String savepath) { this.savepath = savepath; } public File[] getUpload() { return upload; } public void setUpload(File[] upload) { this.upload = upload; } public String[] getUploadContentType() { return uploadContentType; } public void setUploadContentType(String[] uploadContentType) { this.uploadContentType = uploadContentType; } public String[] getUploadFileName() { return uploadFileName; } public void setUploadFileName(String[] uploadFileName) { this.uploadFileName = uploadFileName; } public String execute() { for (int i = 0; i < upload.length; i++) { FileInputStream fis = null; FileOutputStream fos = null; try { fis = new FileInputStream(upload[i]); fos = new FileOutputStream(ServletActionContext.getServletContext() .getRealPath("/") + this.getSavepath() + "/" + this.getUploadFileName()[i]); byte[] b = new byte[1024 * 1024];<pre name="code" class="java"> fis.read(b);fos.write(b);<pre name="code" class="java">} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try {if (fis != null)fis.close();if (fos != null)fos.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}return SUCCESS;}}
相关文章推荐
- Struts - 标签库
- struts1.0于struts2.0的比较
- Struts2中关于namespace的学习心得
- Struts2----自定义action的学习心得
- HTTP Status 404 - There is no Action mapped for namespace [/] and action name [login!welcome] associ
- struts2
- SSH学习笔记---struts2 spring集成时action的class的值
- ssh--问题记录
- 文章标题 使用ajaxFileupload+struts2完成文件的上传以及回显到jsp的链接地址
- struts 学习笔记
- Struts2 的基本配置
- struts2框架架构流程
- struts2.0拦截器(实现未登录的用户不能访问系统的页面)(转)
- Struts2 面试题分析
- Struts2+jQuery+JSON实现异步交互
- 软件开发疑惑解答
- ajax ssh 整合
- 关于struts2框架学习
- struts2 @Action给方法注解
- struts2学习笔记