解析FileList对象

时间:2017-03-21 03:14:21

标签: java jquery ajax grails

我正在使用FormData在我的grails项目中上传多个文件。文件需要通过Ajax上传。我使用以下代码进行ajax上传。但是在控制器中,我将params作为[object FileList]。如何从此对象获取文件。有没有办法将此对象更改为multipart?



jQuery('#file-save').click(function() {
  if (jQuery('#form input[type="file"]')) {
    var form = jQuery("#form").find('input[type="file"]');

    var picData = new FormData();
    picData.append('userFiles', form.get(0).files);
    picData.append('userId', '$usrId');

    jQuery.ajax({
      url: '/file/upload',
      type: 'post',
      dataType:'json',
      data: picData,
      enctype: "multipart/form-data",
      contentType: false,
      processData: false,
      success: function(data) {
        console.log("success");
      }
    });
  }
});



 控制器代码为:

def upload(){
    def userId = params.userId
    def inputFile = params.userFiles
    println(inputFile)
    inputFile.each{i,j->
        println(i)
        println(j)
    }
}

当我调试时,我得到params.userFiles:" [object FileList]"。任何见解都将不胜感激。

1 个答案:

答案 0 :(得分:1)

您很可能需要遍历文件客户端,为每个文件添加相同的密钥

var picData = new FormData();
// loop through form.get(0).files
picData.append('userFiles', file);
// end loop
picData.append('userId', '$usrId');