post文件和数据与fetch解析为415不支持的媒体类型

1tuwyuhd  于 2021-07-26  发布在  Java
关注(0)|答案(0)|浏览(427)

如前所述,我试图通过fetchapi发布数据和文件。
下面是一个简化版本,我只尝试上传数据部分。数据是一个javascript对象。它的主要名称是“应用程序”和
content-type application/json .
我已经意识到 DataForm 对象,我不应将标头中多部分formdata的内容类型声明为 Content-Type: multipart/form-data .

const formData = new FormData();
    formData.append("application", data)

    try {
        const response = await fetch("/api", {
            method: "POST",
            body: formData,
        });
        handleFetchErrors(response);
        return await response.json();
    } catch (e) {
        console.error(e);
    }

问题:我得到的错误是 415 Unsupported Media Type 更具体一些 Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/octet-stream' not supported] 这对我来说没有任何意义,因为在浏览器中发出请求后,我可以在devtools->network中的content type-> multipart/form-data; boundary=...(some value) 在后端(java spring boot),实现以下功能:

@RequestMapping(value = "/api", method = RequestMethod.POST, consumes = {"multipart/form-data"}, produces = {"application/json"})
    public @ResponseBody Application createApplication(
            @RequestPart("application") @Valid @NonNull Application application,
            @RequestPart("file") @Valid @Nullable MultipartFile[] files
    ) {
        return applicationService.createApplication(application);
    }

我已经在《 Postman 》上测试过了,它似乎很管用,但在前端就不行了。
更新:我认为 formData.appen(key,value) 不能是对象。到目前为止,我只找到字符串或文件作为值选项。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题