4

RestTemplate で2つのパラメータを投稿するのに問題があります:

  • 文字列
  • マルチパートファイル

私のコントローラーは非常に基本的なものなので、問題はないと思います。コントローラーが name パラメータを受け取っていないようです。私のコードの何が問題なのか教えていただけますか

コントローラー(受信機)

@RequestMapping(value="/fileupload", method=RequestMethod.POST)
public void handleFileUpload(@RequestParam("name") String fileUploadHandlerName,
                             @RequestParam("file") MultipartFile file)
{
    [...]
}

Rest クライアント(送信者)

RestTemplate rest = new RestTemplate();
URI uri = new URI("http://127.0.0.1:7011/xxxxxxxx/admin/fileupload");

MultiValueMap<String, Object> parts = new LinkedMultiValueMap<String, Object>();
parts.add("name", "import_keys");
Resource file = new ClassPathResource("xmlFileImport/file.xml");
parts.add("file", file);

rest.postForLocation(uri, parts);

コントローラーのスタックトレース

org.springframework.web.bind.MissingServletRequestParameterException: 必須の文字列パラメーター 'name' が存在しません

4

1 に答える 1

5

マルチパート リクエストの処理は複雑なプロセスです。リクエストパラメーターを読み取るほど単純ではありません。そのため、Spring では、そのようMultipartResolverなリクエストを解析して処理できるように、 を宣言する必要があります。ファイルでこれを行うことができapplicationContext.xmlます:

<bean id="multipartResolver"  
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
    <property name="maxUploadSize">  
        <value> <YOUR_SIZE> </value>  
    </property>  
    <property name="maxInMemorySize">  
        <value> <YOUR_SIZE> </value>  
    </property>      
</bean>

CommonsMultipartResolverコントローラーがプレーンなリクエストパラメーターとアップロードされたファイルを見つけられるように、リクエストを解析してパーツを分割する実装はどこにありますか。

于 2013-04-26T15:07:20.427 に答える