1.使用Struts2实现单个文件上传
注意:要实现文件上传文件,一定要添加两个jar包,commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar
(1)新建fileUpload.jsp
<body>
<s:form action="fileUpload" enctype="multipart/form-data" method="post">
<s:file name="uploadFile" label="文件上传"/>
<s:submit value="提交"/>
<s:reset value="重置"/>
</s:form>
</body>
(2)新建FileUploadAction.class
package com.tyf.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 FileUploadAction extends ActionSupport{
private File uploadFile;//用来封装上传的文件
private String uploadFileContentType;//用来封装上传文件的类型
private String uploadFileFileName;//用来封装上传文件的文件名
public File getUploadFile() {
return uploadFile;
}
public void setUploadFile(File uploadFile) {
this.uploadFile = uploadFile;
}
public String getUploadFileContentType() {
return uploadFileContentType;
}
public void setUploadFileContentType(String uploadFileContentType) {
this.uploadFileContentType = uploadFileContentType;
}
public String getUploadFileFileName() {
return uploadFileFileName;
}
public void setUploadFileFileName(String uploadFileFileName) {
this.uploadFileFileName = uploadFileFileName;
}
public String execute() throws Exception{
InputStream is=new FileInputStream(uploadFile);
String uploadPath=ServletActionContext.getServletContext().getRealPath("/upload");
File toFile =new File(uploadPath,this.getUploadFileFileName());
OutputStream os=new FileOutputStream(toFile);
byte[] buffer=new byte[1024];//设置缓存
int length=0;
while((length=is.read(buffer))>0){
os.write(buffer,0,length);
}
is.close();
os.close();
return SUCCESS;
}
}
(3)fileUploadResult.jsp
<body>
上传文件名: ${uploadFileFileName}<br>
文件类型: ${uploadFileContentType}<br>
</body>
(4) struts.xml
<package name="upload" extends="struts-default" namespace="/">
<action name="fileUpload" class="com.tyf.upload.FileUploadAction">
<result name="success">/fileUploadResult.jsp</result>
<result name="input">/fileUpload.jsp</result>
</action>
</package>
项目运行
这里会出现这种问题,后来发现这个目录下没有upload文件夹,新建upload文件夹之后,项目正常运行。