您的位置:首页 > 编程语言 > Java开发

struts实现文件上传下载

2016-06-12 18:27 429 查看
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.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;}}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  struts2.0