1. ホーム
  2. java

[解決済み】MultipartException: 現在のリクエストはマルチパートリクエストではありません

2022-01-25 05:47:40

質問

ファイルをアップロードするためのrestfulなコントローラを作ろうとしています。私は見た これ を作成し、このコントローラを作成しました。

@RestController
public class MaterialController {

    @RequestMapping(value="/upload", method= RequestMethod.POST)
    public 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.";
        }
    }
}

そして、postmanを使ってpdfを送信しました。

しかし、サーバーがエラーでクラッシュしてしまいます。

.MultipartException: Current request is not a multipart request

またもや これ を追加し、さらに bean.xml ファイル

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="multipartResolver"
          class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    </bean>
</beans>

残念ながら というエラーが出てしまいます。

どうすればいいですか?

Postmanをマルチパートリクエストに使用している場合、HeaderにカスタムContent-Typeを指定しないでください。そのため、PostmanのHeaderタブは空であるべきです。Postmanはフォームデータの境界を決定します。PostmanのBodyタブでform-dataを選択し、file typeを選択する必要があります。関連する議論は以下のサイトで見ることができます。 https://github.com/postmanlabs/postman-app-support/issues/576