1.单文件上传
1.1 文件上传表单
<form action="/Struts05/uploadDemo" method="post" enctype="multipart/form-data">
<input type="file" name="upload"/><br/>
<input type="submit" value="上传"/>
</form>
1.2 struts.xml
<struts>
<constant name="struts.devMode" value="true"></constant>
<constant name="struts.multipart.maxSize" value="2097152000"></constant>
<package name="default" extends="struts-default" namespace="/">
<action name="*Demo" class="com.action.DemoAction" method="{1}">
<result name="success" >/upload_success.jsp</result>
<result name="input" >/upload_fail.jsp</result>
<interceptor-ref name="fileUpload">
<param name="maximumSize ">209715200</param>
<param name="allowedExtensions">.jpg,.png</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</action>
</package>
</struts>
1.3 处理文件上传的Action
package com.action;
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class DemoAction extends ActionSupport {
private String uploadFileName;
private String uploadContentType;
private File upload;
public String upload(){
try {
String path=ServletActionContext.getServletContext().getRealPath("/upload");
File destFile=new File(path,uploadFileName);
FileUtils.copyFile(upload, destFile);
} catch (IOException e) {
e.printStackTrace();
}
return SUCCESS;
}
public String getUploadFileName() {
return uploadFileName;
}
public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
}
public String getUploadContentType() {
return uploadContentType;
}
public void setUploadContentType(String uploadContentType) {
this.uploadContentType = uploadContentType;
}
public File getUpload() {
return upload;
}
public void setUpload(File upload) {
this.upload = upload;
}
}
2. 多文件上传
2.1 多文件上传表单
<form action="/Struts05/uploadDemo2" method="post" enctype="multipart/form-data">
<input type="file" name="upload"/><br/>
<input type="file" name="upload"/><br/>
<input type="file" name="upload"/><br/>
<input type="submit" value="上传"/>
</form>
2.2 struts.xml
2.3 处理多文件上传的Action
package com.action;
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class Demo2Action extends ActionSupport {
private String[] uploadFileName;
private String[] uploadContentType;
private File[] upload;
public String upload(){
try {
String path=ServletActionContext.getServletContext().getRealPath("/upload");
for (int i=0;i<upload.length;i++) {
if(upload[i]!=null){
File destFile=new File(path,uploadFileName[i]);
FileUtils.copyFile(upload[i], destFile);
}
}
} catch (IOException e) {
e.printStackTrace();
}
return SUCCESS;
}
public String[] getUploadFileName() {
return uploadFileName;
}
public void setUploadFileName(String[] uploadFileName) {
this.uploadFileName = uploadFileName;
}
public String[] getUploadContentType() {
return uploadContentType;
}
public void setUploadContentType(String[] uploadContentType) {
this.uploadContentType = uploadContentType;
}
public File[] getUpload() {
return upload;
}
public void setUpload(File[] upload) {
this.upload = upload;
}
}
3. 文件下载
3.1 下载页面
<a href="/Struts05/downloadDemo3?downloadFile=图片101.png">点击下载</a>
3.2 struts.xml配置
<action name="*Demo3" class="com.action.Demo3Action" method="{1}">
<result name="success" type="stream">
<param name="contentType">application/octet-stream</param>
<param name="inputName">inputStream</param>
<param name="contentDisposition">attachment;filename="${fileName}"</param>
<param name="encode">true</param>
<param name="bufferSize">4096</param>
</result>
</action>
3.3 处理文件下载的Action
public class Demo3Action extends ActionSupport {
private String downloadFile;
private InputStream inputStream;
private String fileName;
public String download() {
try {
String path = ServletActionContext.getServletContext().getRealPath("/upload");
downloadFile=new String(downloadFile.getBytes("ISO-8859-1"), "UTF-8");
File file = new File(path, downloadFile);
FileInputStream fis = new FileInputStream(file);
inputStream=new BufferedInputStream(fis);
fileName="此文件下载由Struts05网站提供---"+downloadFile;
} catch (IOException e) {
e.printStackTrace();
}
return SUCCESS;
}
public String getDownloadFile() {
return downloadFile;
}
public void setDownloadFile(String downloadFile) {
this.downloadFile = downloadFile;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public InputStream getInputStream() {
return inputStream;
}
public void setInputStream(InputStream inputStream) {
this.inputStream = inputStream;
}
}