今天使用了struct2 文件上传
上传的具体流程如下:
1.新建类
FileUploadDemo.java 代码如下:
import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
/**
1. Created by Misskey on 2015/9/9.
*/
public class FileUploadAction extends ActionSupport {
private static final long serialVersionUID=1L;
private File uploadFile;
private String uploadFileFileName;
private String uploadFileContentType;
public File getUploadFile() {
return uploadFile;
}
public void setUploadFile(File uploadFile) {
this.uploadFile = uploadFile;
}
public String getUploadFileFileName() {
return uploadFileFileName;
}
public void setUploadFileFileName(String uploadFileFileName) {
this.uploadFileFileName = uploadFileFileName;
}
public String getUploadFileContentType() {
return uploadFileContentType;
}
public void setUploadFileContentType(String uploadFileContentType) {
this.uploadFileContentType = uploadFileContentType;
}
@Override
public String execute() throws Exception {
if(uploadFile!=null){
String dataDir="e:\\upload\\";
File savedFile=new File(dataDir,uploadFileFileName);
uploadFile.renameTo(savedFile);
}else{
return INPUT;
}
return SUCCESS;
}
}
2 修改struts.xml
配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="uploadfile" namespace="/" extends="struts-default">
<action name="fileupload" class="FileUploadAction">
<interceptor-ref name="defaultStack">
<param name="fileUpload.maximumSize">100000000000000000</param>
<param name="fileUpload.allowedTypes">image/jpg,image/jpeg,image/png</param>
</interceptor-ref>
<result name="success">/success.jsp</result>
</action>
</package>
</struts>
3.index.jsp 如下
<%@ taglib prefix="s" uri="/struts-tags" %>
<%--
Created by IntelliJ IDEA.
User: Misskey
Date: 2015/9/9
Time: 10:17
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title></title>
</head>
<body>
<s:form action="fileupload" enctype="multipart/form-data" method="POST">
<s:file name="uploadFile" label="选择文件"></s:file>
<s:submit/>
</s:form>
</body>
</html>
“`
4.当运行的时候出现了问题
报错原因是 500
com.opensymphony.xwork2.ognl.SecurityMemberAccess.isPackageExcluded(SecurityMemberAccess.java:114)
解决办法是 首先要新建包 然后把FileUpdateAction.java 移动到该包下。