2017-10-17 16 views
0

ng-file-uploadを使用してファイルをアップロードし、値のリスト(Longをタイプ)を同時に送信します。
私が行っているもの:
クライアント側ng-file-upload:追加データとしてリストを送る

vm.uploadFiles = function(file, errFiles) { 
    $scope.f = file; 
    $scope.errFile = errFiles && errFiles[0]; 
    if (file) { 
     file.upload = Upload.upload({ 
      url: '/api/sendMailCra', 
      fields: {'collaborateursId':vm.collaborateursId}, 
      file: file 
     }); 

     file.upload.then(function (response) { 
      $timeout(function() { 
       file.result = response.data; 
      }); 
     }, function (response) { 
      vm.clear(); 
     }, function (evt) { 
     }); 
    } 
} 

サーバー側

@RequestMapping(value = "/sendMailCra", 
     method = RequestMethod.POST, 
     produces = MediaType.APPLICATION_JSON_VALUE) 
@Timed 
public void upload(@RequestParam("collaborateursId") List<Long> collaborateursId, @RequestParam("file") MultipartFile file) throws IOException { 
    log.debug("REST send mail to Collaborateurs : {}"+collaborateursId); 
} 

私は

500内部サーバーエラーを取得しています

サーバー側にエラーログはありません。

リストをクライアント側からサーバー側に渡すにはどうすればよいですか?私たちは、サーバーに角度コントローラからファイルやデータを送信することができますform dataを使用することにより
おかげ

答えて

0

。コントローラ

vm.uploadFiles = function(file, errFiles) { 
    $scope.f = file; 
    $scope.errFile = errFiles && errFiles[0]; 
    var data = new FormData(); 
    data.append("uploadFile ", file); 
    data.append("collaborateursId ", vm.collaborateursId); 
    if (file) { 
     file.upload = Upload.upload({ 
      url: '/api/sendMailCra', 
      data:data, 
      headers: {'Content-Type': undefined} 
     }); 

     file.upload.then(function (response) { 
      $timeout(function() { 
       file.result = response.data; 
      }); 
     }, function (response) { 
      vm.clear(); 
     }, function (evt) { 
     }); 
    } 
} 

mutipartRequest

@RequestMapping(value = "/sendMailCra", 
     method = RequestMethod.POST, 
     ) 
@Timed 
public void upload(HttpServletRequest request, HttpServletResponse response) throws IOException { 
     String collaborateursId= request.getParameter("collaborateursId"); 

    next converted the request to multipartRequest for get th file 
    MultipartHttpServletRequest mRequest = (MultipartHttpServletRequest) request; 
    Iterator<String> fileNames = mRequest.getFileNames(); 
      while (fileNames.hasNext()) { 
//    HashMap<String, String> hashMap = new HashMap<String, String>(); 
       MultipartFile file = mRequest.getFile(fileNames.next()); 

       store file into your prefered location.... 
       } 

     log.debug("REST send mail to Collaborateurs : {}"+collaborateursId); 
} 

を使用して私たちはconfigurationFile link

<beans:bean id="multipartResolver" 
     class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 

     <!-- setting maximum upload size --> 
     <beans:property name="maxUploadSize" value="100000" /> 

    </beans:bean> 

このlink

を参照してください春にファイルサイズの上限を設定することができます
+0

ありがとうございました。サーバー側では、要求オブジェクト(実行時にStandardMultiPartHttpServletRequestタイプ)のプロパティ "collabateursId"が表示されません。私はプロパティを持っている:multipartParameterNamesのサイズ= 0とmultipartFilesのサイズ= 0。 – thomas

+0

@RequestMappingアノテーションは値とメソッドだけを渡します。値を生成しません。このリンクを見ると、より多くの情報が得られます。https://stackoverflow.com/questions/34991498/how-to-send-multiple-files-along-フォームデータと角度データ/ 46708678#46708678 – Raju

関連する問題