單文件上傳
步驟如下:
(1)將commons-io-x.x.x.jar包和commons-fileupload-x.x.x.jar包導入到項目的WEB-INF/lib目錄下;
(2)把form表單的enctype類型設爲multipart/form-data,如下:
<form action="${pageContext.request.contextPath}/uploadImage.do" method="post" enctype="multipart/form-data">
<input type="file" name="image"/><br>
<input type="submit" value="submit"/>
</form>
(3)在Action類中添加以下屬性:
1)File filename:文件名要和表單中提交的name屬性相同;
2)StringfilenameContentType:得到文件的類型(文件名+ContentType是固定格式);
3)StringfilenameFileName:得到文件的名稱(文件名+FileName是固定格式)。
Action類中需要使用FileUtils.copyFile(srcFile,destFile),用來複制上傳的文件到項目中。
示例如下:
struts.xml中關鍵代碼:
<action name="uploadImage" class="com.chen.action.SubmitForm" method="upload">
<!-- 爲Action的 imagePath屬性注入值-->
<param name="imagePath">/images</param>
<result name="success">/sayMessage.jsp</result>
<result name="error">/sayMessage.jsp</result>
</action>
Action類的代碼:
public class SubmitForm {
//返回信息
public String message=null;
//設置上傳文件的保存文件路徑
public String imagePath=null;
//文件
private File image;
//文件類型
private String imageContentType;
//文件名
private String imageFileName;
public String upload(){
//獲取真實路徑
String realPath=ServletActionContext.getServletContext().getRealPath(imagePath);
File file=new File(realPath);
if(!file.exists()){
file.mkdirs();
}
try {
FileUtils.copyFile(image, new File(file,imageFileName));
message="save OK";
return "success";
} catch (IOException e) {
message="save error";
return "error";
}
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getImagePath() {
return imagePath;
}
public void setImagePath(String imagePath) {
this.imagePath = imagePath;
}
public File getImage() {
return image;
}
public void setImage(File image) {
this.image = image;
}
public String getImageContentType() {
return imageContentType;
}
public void setImageContentType(String imageContentType) {
this.imageContentType = imageContentType;
}
public String getImageFileName() {
return imageFileName;
}
public void setImageFileName(String imageFileName) {
this.imageFileName = imageFileName;
}
}
注:通過Struts的常量可以配置上傳文件的大小。
<constant name="struts.multipart.maxSize"value="10701096"/>