私は何を試してもこれを理解できないようです。Spring Boot + multipart/form-dataコントローラメソッド
@RequestMapping(consumes = {"multipart/form-data"}, method = {RequestMethod.GET, RequestMethod.POST, RequestMethod.PUT, RequestMethod.DELETE}, path = {"/rest", "/rest/**"})
public void handleMultipartRestApiRequest(MultipartHttpServletRequest request, HttpServletResponse response, @RequestPart(value = "filedata", required = false) MultipartFile filedata) throws Exception {
r...
}
filedataに変数は常にnullである、とリクエストオブジェクト:私は次のような方法で注釈を付け@RestControllerと春ブーツ1.4アプリを持っている
curl -v -F name=countries.zip -F [email protected] http://localhost:8080/rest
:私はこのcurlコマンドを送信しています常に0個のファイルを表示します。
私はMultipartResolverで複数の設定を試しました。
multipart.enabled=true
spring.http.multipart.enabled =真
:@Bean
public MultipartResolver multipartResolver() {
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
multipartResolver.setMaxUploadSize(5000000);
multipartResolver.setMaxInMemorySize(5000000);
multipartResolver.setDefaultEncoding("utf-8");
return multipartResolver;
}
私は手動でも、私のapplication.propertiesでこれらを突っ込んはちょうどそれが無効になっていない1000%確認する:ここでは私の最新のものです
と良い測定のために、ここにいるリクエストヘッダ:
* Connected to localhost (::1) port 8080 (#0)
> POST /rest HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.43.0
> Accept: */*
> Content-Length: 817999
> Expect: 100-continue
> Content-Type: multipart/form-data; boundary=------------------------7d3f4606455e862b
>
誰もが手掛かり理由を持っています私はコントローラ上のファイルを見ることができないようですか?
UPDATE 1:
私がリクエストオブジェクトに十分掘るとorg.catalina.connector.Requestオブジェクトを取得する場合、情報を保持しているようだDiskFileItemが含まれているApplicationPartアイテムのArrayListのがありますアップロードしようとしているファイルこれは実際にはrequest.getParts()を呼び出したときに返されるCollectionです。ファイル項目の場所のパスは、いくつかの長いTMPパスである:それはまた、コンテンツタイプがアプリケーション/オクテットストリームであると言いますが
/private/var/folders/n8/15d6vbhj0692cslf3cx8c1jm0000gn/T/tomcat.6840182548028446450.8080/work/Tomcat/localhost/myapp
、サイズが-1され、そして「isFormField」のようないくつかの他のすごみは、さえ偽であります私はそれを私のカールコマンドのフォームフィールドとして指定していますが。だから、春はマルチパート/フォームデータ要求を扱う正しい方法を呼んでいますが、 "部分"情報はそれがオクテットストリームだと思えるようです。
私は多分あなたのマルチパートオブジェクトをインスタンス化していないと思います。同様に:MultipartFile filedata = fileToBeAdded.getSomething(); –
あなたは何を意味するのかわかりません...私は要求のファイルを期待しています。私がMap map = request.getFileMap();のようなことをすると、マップは空です。 –
Bal
'@ RequestPart'の代わりに' @ RequestParam'を試してください。 –