我希望在struts 2中使用ajax上传文件excel但是获取null, 我在jsp页面中使用纯html标签,我认为这不是问题
这是我尝试的:
jsp:
<form id="uploadImgForm" action="fileUploadAction" method="post" enctype="multipart/form-data">
<input type="file" name="myFile" id="UploadFile">
<input type="button" value="Upload" onclick="uplod()">
</form>
这是ajax功能
ajax:
function uplod(){
var form = $('#uploadImgForm')[0];
var data = new FormData(form);
$.ajax({
type: "POST",
enctype: 'multipart/form-data',
url: "fileUploadAction",
data : data,
cache: false,
processData: false,
contentType: false,
success: function() {
console.log("SUCCESS ");
},
error: function() {
console.log("ERROR");
}
});
}
struts 2 xml:
<action name="fileUploadAction" class="id.co.yutaka.mandoc.action.tesUplod">
<result type="json"></result>
</action>
在集体诉讼中:
public class tesUplod extends ActionSupport{
private File myFile;
String myFileFileName;
@Override
public String execute(){
System.out.println("file ="+ myFile);
System.out.println("file ="+ myFileFileName );
return SUCCESS;
}
public File getMyFile() {
return myFile;
}
public void setMyFile(File myFile) {
this.myFile = myFile;
}
public String getMyFileFileName() {
return myFileFileName;
}
public void setMyFileFileName(String myFileFileName) {
this.myFileFileName = myFileFileName;
}
}
输出:
myFile =null
myFileFileName =null
答案 0 :(得分:0)
我解决了这个问题。
我改变的是我在xml中使用正常的动作设置
<action name="fileUploadAction" class="id.co.yutaka.mandoc.action.tesUplod">
<interceptor-ref name="loginStack"></interceptor-ref>
<interceptor-ref name="fileUpload">
<param name="maximumSize">100000000</param>
</interceptor-ref>
<result name="success"></result>
</action>
不使用json xml动作, 我使用这个,我得到了一个文件和任何其他表单值。
这可能对其他
有用