我一直在尝试使用ajax调用进行图片上传操作。下面是一段代码。
$.ajax({
type: "GET",
url: "imageUploadAction.action",
parameters: {
file: file
},
success: function(response) {
alert('Success');
}
});
在struts.xml
,我有:
<action name="imageUploadAction"
class="com.sample.ImageUpload">
<interceptor-ref name="fileUpload">
<param name="maximumSize">2097152</param>
<param name="allowedTypes">
image/png,image/gif,image/jpeg,image/pjpeg
</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
<result name="success" type="stream">
<param name="contentType">text/html</param>
<param name="inputName">imageOutputStream</param>
</result>
<result name="error" type="stream">
<param name="contentType">text/html</param>
<param name="inputName">imageOutputStream</param>
</result>
</action>
我的行动课是:
package com.sample;
import java.io.File;
import java.io.InputStream;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.io.FileUtils;
import org.apache.struts2.interceptor.ServletRequestAware;
import com.opensymphony.xwork2.ActionSupport;
public class ImageUpload extends ActionSupport implements ServletRequestAware {
/**
*
*/
private static final long serialVersionUID = 1L;
private HttpServletRequest servletRequest;
private File file;
private String fileContentType;
private String fileFileName;
private InputStream imageOutputStream;
public void execute() {
try {
String filePath = servletRequest.getSession().getServletContext().getRealPath("/");
File fileToCreate = new File(filePath, this.fileFileName);
FileUtils.copyFile(this.file, fileToCreate);
} catch (Exception e) {
e.printStackTrace();
// addActionError(e.getMessage());
// return INPUT;
}
// return SUCCESS;
}
public File getFile() {
return file;
}
public void setFile(File file) {
this.file = file;
}
public String getFileContentType() {
return fileContentType;
}
public void setFileContentType(String fileContentType) {
this.fileContentType = fileContentType;
}
public String getFileFileName() {
return fileFileName;
}
public void setFileFileName(String fileFileName) {
this.fileFileName = fileFileName;
}
public HttpServletRequest getServletRequest() {
return servletRequest;
}
@Override
public void setServletRequest(HttpServletRequest servletRequest) {
this.servletRequest = servletRequest;
}
public InputStream getImageOutputStream() {
return imageOutputStream;
}
public void setImageOutputStream(InputStream imageOutputStream) {
this.imageOutputStream = imageOutputStream;
}
}
当我尝试调试时,我发现在ajax调用期间没有设置文件变量。有人可以帮我这个吗?