最近在自学struts2,记录一下学习过程
首先大概描述一下上传步骤吧:
1.首先需新建一个upload.jsp
2.新建一个UploadAction类用来处理文件上传
3.配置struts.xml
upload.jsp的主要代码如下:
<s:form action="uploadAction" enctype="multipart/form-data">
<s:file name="upload" label="请选择文件"></s:file>
<s:submit value="上传"></s:submit>
</s:form>
特别需要注意的是enctype必须设置为multipart/form-data
UploadAction的主要代码如下:
public class UploadAction extends ActionSupport{
private File upload;
private String uploadFileName;
private String uploadFileContentType;
private String savePath;
public File getUpload() {
return upload;
}
public void setUpload(File upload) {
this.upload = upload;
}
public String getUploadFileContentType() {
return uploadFileContentType;
}
public void setUploadFileContentType(String uploadFileContentType) {
this.uploadFileContentType = uploadFileContentType;
}
public String getUploadFileName() {
return uploadFileName;
}
public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
}
public String getSavePath() {
return savePath;
}
public void setSavePath(String savePath) {
this.savePath = savePath;
}
@Override
public String execute() throws Exception {
String realPath = ServletActionContext.getServletContext().getRealPath(getSavePath());
System.out.println("realPath: " + realPath);
System.out.println("uploadFileName: " + getUploadFileName());
File file = new File(realPath);
if(!file.exists()) {
file.mkdir();
}
FileUtils.copyFile(getUpload(), new File(file, getUploadFileName()));;
return SUCCESS;
}
}
upload表示上传的文件
uploadFileName:文件名
uploadContentType:文件类型
此处要注意这三个变量的命名规则,若不符合规则,uploadFileName和uploadContentType可能取不到值
struts.xml主要代码如下:
<action name="uploadAction" class="com.ccnu.action.UploadAction">
<interceptor-ref name="fileUpload">
<param name="allowedTypes">
image/jpeg
</param>
<param name="maximumSize">20000</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
<param name="savePath">/upload</param>
<result>/WEB-INF/content/uploadSucc.jsp</result>
<result name="input">/upload.jsp</result>
</action>
注意:别忘了配置savePath属性