使用struts 2和ajax上传文件excel

时间:2018-03-25 06:04:42

标签: ajax struts2

我希望在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

1 个答案:

答案 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动作, 我使用这个,我得到了一个文件和任何其他表单值。

这可能对其他

有用