春3休憩マルチパートファイルアップロードのPOCを行いました。うまく動作します。しかし、アプリケーションと統合しようとしたときに問題に直面しています。
次の例外をスローします。
org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request;
nested exception is org.Apache.commons.fileupload.FileUploadException:
the request was rejected because no multipart boundary was found**"
私のコードのどこかが間違っているかどうかを教えてください。
豆:
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="order" value="1" />
<property name="mediaTypes">
<map>
<entry key="json" value="application/json" />
<entry key="xml" value="application/xml" />
<entry key="file" value="multipart/mixed" />
</map>
</property>
</bean>
<!-- multipart resolver -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- one of the properties available; the maximum file size in bytes -->
<property name="maxUploadSize" value="50000000" />
</bean>
コントローラ:
@Controller
public class MultipleFilesRecieve {
@RequestMapping ( value = "/saveMultiple", method = RequestMethod.POST )
public String save( FileUploadForm uploadForm ) {
List<MultipartFile> files = uploadForm.getFiles( );
List<String> fileNames = new ArrayList<String>( );
if ( null != files && files.size( ) > 0 ) {
for ( MultipartFile multipartFile : files ) {
String fileName = multipartFile.getOriginalFilename( );
fileNames.add( fileName );
}
}
return "multifileSuccess";
}
}
@sermolaevが正解です。
この問題に関する私の経験を共有したいと思います。 Postmanでこの問題に遭遇しましたが、その根本原因を長い間理解できませんでした。 Postmanがboundary
を含んでいるので、私のリクエストテンプレートは正しいようです...
最終的に、自分でContent-Type=multipart/form
ヘッダーを指定すると、Postmanによって自動的に追加されたヘッダーが上書きされることを発見しました。そして、これはあなたと同じエラーにつながります。私の解決策は、Content-Type
ヘッダーを削除するのと同じくらい簡単でした。
リクエストにContent-Type
ヘッダーを指定しないでください。それが動作します。
セキュリティフィルターを使用していますか?私の問題は、セキュリティフィルターチェーンを削除することで解決しました。これから:
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).addFilters(this.springSecurityFilterChain).build();
これに:
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
詳細を説明する問題を開きました: https://jira.spring.io/browse/SPR-12114