繁体   English   中英

在grails控制器中解析ajax多个文件上传

[英]Parsing ajax multiple file upload in grails controller

我已经使用FormData()来上传多个文件。 在浏览器控制台中,显示了文件列表,但是在控制器内部,该列表以字符串格式显示为“ [对象文件],[对象文件],[对象文件]”。 如何解析其中的值? 我的JavaScript代码是:

var form = jQuery("#upload-form").find('input[type="file"]');
var picData = new FormData();
var fl = form.get(0).files.length;
var files = []; 

for (var i = 0; i < fl; i++) {

    files.push(form.get(0).files[i]);
    console.log(files); //The list files is shown
}

 picData.append("filesList[]",files);

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

我做了JSON.parse(params.filesList []),但它只输出“对象文件”字符串。 在发送给控制器之前,应该在javascript中做点什么吗?

通常在控制器内部,您可以从请求中获取文件,如下所示:

File file    = request?.getFile('fileName')

但是在您的代码中,有多个文件,因此您可以迭代每个文件

File file0    = request?.getFile('filesList[0]')
File file1    = request?.getFile('filesList[1]')

您可以在控制器操作中像这样访问:

 for (filename in request.getFileNames()) {
        MultipartFile fileContent = request.getFile(filename)
        println "This file name" + filename
        println "This file is file content" + fileContent                    
  }

希望这个能对您有所帮助 !!!。

我对此做了一个解决方法。 我必须将每个文件放入键值对中,然后再传递给后端。

jQuery('#file-submit-save').click(function(){

                               var form = jQuery("#upload-form").find('input[type="file"]');
                               var picData = new FormData();
                               var fl = form.get(0).files.length;
                               for (var i = 0; i < fl; i++) {
                               picData.append("files["+i+"]", form.get(0).files[i]);
                               }
                               picData.append('fileSize',fl);

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

只有这样,我才能在后端使用与对应密钥相关联的多部分文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM