29

Spring 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";
    }
}
4

4 に答える 4

34

問題はあなたのコードにあるのではなく、あなたのリクエストにあります。マルチパート リクエストに境界がありません。仕様で述べたように:

マルチパート エンティティの Content-Type フィールドには、カプセル化の境界を指定するために使用される「境界」という 1 つのパラメータが必要です。カプセル化の境界は、完全に 2 つのハイフン文字 (「-」、10 進コード 45) と、その後に続く Content-Type ヘッダー フィールドの境界パラメーター値で構成される行として定義されます。

thisthisの投稿も役立つはずです。

于 2013-09-04T18:40:41.553 に答える
0

Content-Typeリクエストにヘッダーを指定しないでください。それが動作します。

于 2019-01-15T08:16:11.077 に答える