【发布时间】:2014-08-13 22:16:19
【问题描述】:
我正在尝试使用 Jquery ajax 在 struts 2 中上传文件。我可以使用表单提交。请帮助我。 JSP的代码如下
<script type="text/javascript">
function upload()
{
$.ajax({
type : "POST",
url : 'userImage.action',
dataType:'text',
data:$("#uploadForm").serialize(),
async:false,
success : function(data) {
alert(data)
}
});
}
</script>
</head>
<body>
<h2>Struts2 File Upload & Save Example</h2>
<s:actionerror />
<form id="uploadForm" action="userImage" method="post" enctype="multipart/form-data">
<input type="file" name="userImage" /><br>
<input type="button" value="submit" onclick="upload()">
</form>
</body>
</html>
struts2.xml中给出的代码如下
<action name="userImage"
class="hart.bean.FileUploadAction">
<interceptor-ref name="fileUpload">
<param name="maximumSize">2097152</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
<result name="success">SuccessUserImage.jsp</result>
<result name="input">UserImage.jsp</result>
</action>
下面是action类的代码
private File userImage;
private String userImageContentType;
private String userImageFileName;
private HttpServletRequest servletRequest;
public String execute() {
try {
String filePath = servletRequest.getSession().getServletContext().getContextPath();
System.out.println("Server path:" + filePath+" userimg=="+userImageFileName);
File fileToCreate = new File(filePath, this.userImageFileName);
FileUtils.copyFile(this.userImage, fileToCreate);
} catch (Exception e) {
e.printStackTrace();
addActionError(e.getMessage());
return INPUT;
}
return SUCCESS;
}
public File getUserImage() {
return userImage;
}
public void setUserImage(File userImage) {
this.userImage = userImage;
}
public String getUserImageContentType() {
return userImageContentType;
}
public void setUserImageContentType(String userImageContentType) {
this.userImageContentType = userImageContentType;
}
public String getUserImageFileName() {
return userImageFileName;
}
public void setUserImageFileName(String userImageFileName) {
this.userImageFileName = userImageFileName;
}
@Override
public void setServletRequest(HttpServletRequest servletRequest) {
this.servletRequest = servletRequest;
}
【问题讨论】: