2015-10-13 99 views
0

我一直在嘗試使用彈簧多部分請求上傳文件。 我的控制器是這樣的:彈出多個多部分請求文件上傳 - 多部分大小爲0

@RequestMapping(value = "/uploadDocuments") 
    @ResponseBody 
    public String upload(MultipartHttpServletRequest  request,HttpServletResponse response) {     

     System.out.println("reached here.. "); 
     List<MultipartFile> files = request.getFiles("files"); 
     System.out.println(files.size()+"size of the multipart file"); 

我使用Ajax調用加載我的文件。和文件越來越像這樣:

var files = []; 
files.push($('#files')[0].files[0]); 

我不知道我失蹤了。努力獲取服務中的文件數組。請幫忙。

我的客戶端代碼:

<!DOCTYPE html> 
<html> 
    <head> 
     <title></title> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <script src="jquery-1.11.0.min.js"></script> 
     <script> 
      $(document).ready(function() { 

       $('#submit').click(function() { 
        var formData = new FormData(); 

        var files = []; 
        files.push($('#files')[0].files[0]); 
        files.push($('#files')[0].files[1]); 
        formData.append('files', files); 
        $.ajax({ 
         url: 'http://localhost:8085/MyWar/services/uploadDocuments', 
         type: 'POST', 
         dataType: 'text', 
         data: formData, 
         timeout: 45000, 
         contentType: false, 
         processData: false, 
         maxFileSize: 2097152, 
         acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i, 
         error: function (jqXHR, status, err) { 
          alert('ERROR'); 
         }, 
         success: function (data) { 
          alert('SUCCESS'); 
         } 
        }); 
       }); 
      }); 
     </script> 

    </head> 
    <body> 

     <input type="file" id="files" multiple=""/> 
     <button id="submit">Submit</button> 
    </body> 
</html> 

回答

0

終於找到了一種方法。我試圖發送多個文件作爲

var files = []; 
      files.push($('#files')[0].files[0]); 
      files.push($('#files')[0].files[1]); 
      formData.append('files', files); 

的問題,這種方法是,它獲取名稱爲「文件」添加生成的文件數組不是在控制器端接收。 與此相關的一些有趣的問題和站點: 1. http://dhruba.name/2008/12/27/implementing-single-and-multiple-file-multipart-uploads-using-spring-25/ 2. http://viralpatel.net/blogs/ajax-style-file-uploading-using-hidden-iframe/

現在,我改變了從客戶端發送類似的參數:

formData.append('files_1', files[0]); 
formData.append('files_2', files[1]); 

即而不是一個文件陣列,發送多文件和附加到表單數據幫助我。