一.单文件上传
添加jar包
commons-fileupload-1.2.1.jar
commons-io-1.4.jar
在webroot创建一个文件如upload用于保存上传的文件
1.upload.jsp
- <body>
- <s:form action="upload" enctype="multipart/form-data">
- <s:file name="file" label="file"></s:file>
- <s:submit label="upload"></s:submit>
- </s:form>
- </body>
2.UploadAction.java
- package com.test.upload;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.InputStream;
- import java.io.OutputStream;
- import org.apache.struts2.ServletActionContext;
- import com.opensymphony.xwork2.ActionSupport;
- public class UploadAction extends ActionSupport {
- private File file;
- private String fileFileName;
- private String fileContentType;
- public File getFile() {
- return file;
- }
- public void setFile(File file) {
- this.file = file;
- }
- public String getFileContentType() {
- return fileContentType;
- }
- public void setFileContentType(String fileContentType) {
- this.fileContentType = fileContentType;
- }
- public String getFileFileName() {
- return fileFileName;
- }
- public void setFileFileName(String fileFileName) {
- this.fileFileName = fileFileName;
- }
- @Override
- public String execute() throws Exception {
- //1.构建一个输入流
- InputStream is=new FileInputStream(file);
- //2.构建一个上传文件路径
- String root=ServletActionContext.getRequest().getRealPath("/upload");
- //3.获得一个本地文件
- File diskFile=new File(root,this.getFileFileName());
- //4.构建输出流
- OutputStream os=new FileOutputStream(diskFile);
- //5.能过字节写入输出流
- byte[] buffer=new byte[400];
- int length=0;
- while((length=is.read(buffer))>0)
- {
- os.write(buffer,0,length);
- }
- is.close();
- os.close();
- return SUCCESS;
- }
- }
3.配置struts.xml
- <constant name="struts.multipart.saveDir" value="c:\"></constant>
- <package name="FileuploadTest" extends="struts-default">
- <action name="upload" class="com.test.upload.UploadAction">
- <result name="success">/uploadSuccess.jsp</result>
- </action>
- </package>
二.多文件上传
1.upload.jsp页面
- <body>
- <s:form action="upload" enctype="multipart/form-data">
- <s:file name="file" label="file"></s:file>
- <s:file name="file" label="file1"></s:file>
- <s:file name="file" label="file2"></s:file>
- <s:submit label="submit"></s:submit>
- </s:form>
- </body>
2.UploadAction.java
- package com.test.upload;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.util.List;
- import org.apache.struts2.ServletActionContext;
- import com.opensymphony.xwork2.ActionSupport;
- public class UploadAction extends ActionSupport {
- private List<File> file;
- private List<String> fileFileName;
- private List<String> fileContentType;
- public List<File> getFile() {
- return file;
- }
- public void setFile(List<File> file) {
- this.file = file;
- }
- public List<String> getFileContentType() {
- return fileContentType;
- }
- public void setFileContentType(List<String> fileContentType) {
- this.fileContentType = fileContentType;
- }
- public List<String> getFileFileName() {
- return fileFileName;
- }
- public void setFileFileName(List<String> fileFileName) {
- this.fileFileName = fileFileName;
- }
- @Override
- public String execute() throws Exception {
- for (int i = 0; i < file.size(); i++) {
- // 1.构建一个输入流
- InputStream is = new FileInputStream(file.get(i));
- // 2.构建一个上传文件路径
- String root = ServletActionContext.getRequest().getRealPath(
- "/upload");
- // 3.获得一个本地文件
- File diskFile = new File(root, this.getFileFileName().get(i));
- // 4.构建输出流
- OutputStream os = new FileOutputStream(diskFile);
- // 5.能过字节写入输出流
- byte[] buffer = new byte[400];
- int length = 0;
- while ((length = is.read(buffer)) > 0) {
- os.write(buffer, 0, length);
- }
- is.close();
- os.close();
- }
- return SUCCESS;
- }
- }