struts实现文件上传下载

来源:互联网 发布:手机加油软件代理 编辑:程序博客网 时间:2024/06/04 19:24

1.jsp中表单实现上传

<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.pngtry {return new FileInputStream(filePath);} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.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 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;}}

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.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 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;}}
















0 0
原创粉丝点击