struts实现文件上传下载

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

 
 















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值