2017-02-04 11 views
-1

単純なファイルアップロードを可能にしようとしていますが、Springは私と遊びたくありません。ファイルアップロードは角度ファイルアップロードとSpringでは動作しません

これは、ファイルのアップロードのためのエンドポイントである - 現在、多くのことをやっていない:

@PostMapping(WordEmbeddingApiPaths.UPLOAD_MODEL) 
@RequestMapping(method=RequestMethod.POST, consumes = {"multipart/form-data"}) 
public ResponseEntity<WordVectorListDto> uploadModel(
     @ModelAttribute("file") MultipartFile file, 
     // @RequestBody Object obj, 
     RedirectAttributes redirectAttributes) { 

    LOGGER.debug("POST uploadModel"); 

    return new ResponseEntity<WordVectorListDto>((WordVectorListDto)null, HttpStatus.OK); 
} 

私はいくつかのことを試してみたが、それはすべての異なるエラーで終わります。私は多分それはトリックだと思ったので、私はちょうど@RequestBodyを使用しようとしましたが、その後、私は例外が言ってもらう:

Content type 'multipart/form-data;boundary=----WebKitFormBoundarycV8dFSvDV6U9OwJq' not supported 

または

Content type 'multipart/form-data' not supported 

を私は試したものに応じて。

私は@RequestPart("file") MultipartFile fileで行く場合、私は@RequestParam("file")についても同様である

Required request part 'file' is not present 

を参照してください。

私はこれについて何が難しいか分かりませんが、私はクライアントからそのファイルを入手する方法を誰かに教えてください。この要求は大丈夫

です:あなた以下

は、私がエンドポイントに送信したリクエストを見ることができますか?

enter image description here


Webクライアント:

var uploader = $scope.uploader = new FileUploader({ 
    url: 'http://localhost:8080/rest-api/dl4j/we/uploadModel' 
}); 

uploader.onAfterAddingFile = function($modelFile) { 

    console.info('onAfterAddingFile', $modelFile); 

    var fd = new FormData();   
    fd.append('file', $modelFile.file); 

    $http.post($modelFile.url, fd, { 
     headers: { 
      'Content-Type': undefined 
     }, 
     transformRequest: angular.identity   
    }) 
    .then(
     function (data) { 
      alert("upload success"); 
     }, 
     function (data, status) { 
      alert("upload error"); 
     } 
    ); 
}; 

index.htmlを

<label class="btn btn-default btn-file" style="float:right;"> 
    Upload 
    <input 
     type="file" 
     style="display: none;" 
     name="file"  
     multiple  
     nv-file-select     
     uploader="uploader"> 
</label> 
+0

可能な重複http://stackoverflow.com/questions/42044639/file-upload-wont-work-with-angular -file-upload-and-spリング)。 – georgeawg

答えて

1

ここでは、私はそれをディディ方法です:

@RequestMapping(value="/uploadFile", method=RequestMethod.POST) 
      public @ResponseBody String handleFileUpload(
        @RequestParam("file") MultipartFile file){ 
       String name = "test11"; 
       if (!file.isEmpty()) { 
        try { 
         byte[] bytes = file.getBytes(); 
         BufferedOutputStream stream = 
           new BufferedOutputStream(new FileOutputStream(new File(name + "-uploaded"))); 
         stream.write(bytes); 
         stream.close(); 
         return "You successfully uploaded " + name + " into " + name + "-uploaded !"; 
        } catch (Exception e) { 
         return "You failed to upload " + name + " => " + e.getMessage(); 
        } 
       } else { 
        return "You failed to upload " + name + " because the file was empty."; 
       } 
      } 

とマルチパートリゾルバの登録を忘れてはいけない:ここ

@Bean 
public MultipartResolver multipartResolver() { 
    org.springframework.web.multipart.commons.CommonsMultipartResolver multipartResolver = new org.springframework.web.multipart.commons.CommonsMultipartResolver(); 
    multipartResolver.setMaxUploadSize(10000000); 
    return multipartResolver; 
} 

はhtmlコードです...入力フィールドの名前/ IDを見てみましょう。.. はFile1アップロードします:

Name1: <input type="text" name="name"> 


    File2 to upload: <input type="file" name="file"> 

    Name2: <input type="text" name="name"> 


    <input type="submit" value="Upload"> Press here to upload the file! 
</form> 
([角度-ファイルのアップロードと春では動作しませんファイルアップロード]の
+0

'@RequestParam(" file ")'は動作しません。 – displayname

+0

私のanwserを更新しました... htmlコードを見てみましょう...入力ファイルの名前は...ファイル – kamokaze

+0

これは、[screenshot](https://私はパラメータが正しく設定されていると思います。 – displayname

関連する問題