2017-08-07 110 views
0

我把这个问题在参考POST a file with React.jsPOST muiltiple多文件阵营

我现在想送的文件列表到端点。

我输入组件:

<input onChange={(e) => Actions.uploadXLS(e.target.files)} multiple type="file" name="xlsz" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" style={{ display: 'none' }}/> 

操作处理程序:

uploadXLS(files) { 
    let i = 0; 
    const data = new FormData(); 
    for (i = 0; i < files.length; i++) { 
     data.append('file' , files[i]); 
    } 
    console.log(data); 
    this.getInstance().callUploadXLS(data); 
    } 

控制台打印:FORMDATA {}

+1

['FormData'不允许你检查它的对象](https://stackoverflow.com/questions/17066875/how-to-inspect-formdata)。检查文件是否正确传递的唯一方法是检查AJAX调用(通过网络选项卡)。 'console.log(data);'将始终显示相同的对象,而不是文件本身。 – drinchev

+0

你的代码应该可以工作 – drinchev

+0

@drinchev这是有效载荷:------ WebKitFormBoundaryx290rYq0fZY​​R1L6x 内容处理:form-data; NAME = “文件”;文件名= “ExcelFileCore-1.xlsx” 内容类型:应用/ vnd.openxmlformats-officedocument.spreadsheetml.sheet ------ WebKitFormBoundaryx290rYq0fZY​​R1L6x 内容处置:形状数据; NAME = “文件”;文件名= “ExcelFileCore-1 - Copy.xlsx” 内容类型:应用程序/ vnd.openxmlformats-officedocument.spreadsheetml.sheet ------ WebKitFormBoundaryx290rYq0fZY​​R1L6x-- – user1912404

回答

2
 File file = new File("/Users/user1/Documents/VendorDbResources/ExcelFileCore-1.xlsx"); 
     FileInputStream input = new FileInputStream(file); 
     MultipartFile multipartFile1 = new MockMultipartFile("file", file.getName(), "text/plain", IOUtils.toByteArray(input)); 

     file = new File("/Users/user1/Documents/VendorDbResources/ExcelFileCore-2.xlsx"); 
     input = new FileInputStream(file); 
     MultipartFile multipartFile2 = new MockMultipartFile("file", file.getName(), "text/plain", IOUtils.toByteArray(input)); 

     MultipartFile[] arrayOfMultipartFile = {multipartFile1, multipartFile2}; 

     if (arrayOfMultipartFile.length > 0) 
      return vendorService.readExcelFile(arrayOfMultipartFile); 
     else 
      return null; 

我试图用静态data.above后端功能你可以看到我创建了一个多部分文件的数组并提供给服务实现。

它工作正常。条目也可以在db中看到。

+1

你能提供整个控制器端点吗?在这种情况下,'file'应该是一个'MultipartFile'数组,而不是一个'MultipartFile'。由于前端将向您发送一组文件。检查[5。多文件上传](https://www.mkyong.com/spring-mvc/spring-mvc-file-upload-example/)。 – drinchev

+0

'MultipartFile [] arrayOfMultipartFile = {multipartFile1,multipartFile2}; vendorService.readExcelFile(arrayOfMultipartFile);' – user3042916

+1

看起来你没有粘贴控制器代码,只是从那里连线。你在哪里拦截请求参数是我要找的,无论如何,这个问题是关于前端和反应的,所以我不认为解决Java会帮助其他任何人,你可以创建另一个关于如何保存的问题多个文件与Java,你会得到更多的帮助,我猜。 – drinchev