【问题标题】:This request part 'file' is not present此请求部分“文件”不存在
【发布时间】:2022-01-13 06:39:39
【问题描述】:

我看到其他类似的帖子有答案,但因为它对我没有帮助,所以我发布了这个。

我正在使用 Java/Angular 11,我在 FormData 中进行 Post Request 发送数据,但它一直在给我

Request part 'file' is not present

我的服务器

@PostMapping(value = /add, consumes = MediaType.MULTIPART_FORM_DATA_VALUE,headers = ("content-type=multipart/*"))
    public ApiResponseEntity add(@RequestParam("file") MultipartFile file,
                                 @RequestParam("foo") Foo foo) throws IOException {

我的客户(角度)

formData = new FormData()
this.formData.append("file", ev.target.files[0]));
this.formData.append("foo",JSON.stringify(FooDTO));

this.httpClient
                .post<any>(this.baseURL + apiURL + "/add", entity, this.httpOptions)
                .subscribe((response: any) => {
                    resolve(response);
                }, reject);

我的有效负载: ------WebKitFormBoundarysDMcWqKZNsayiMSX 内容处置:表单数据;名称=“文件”;文件名="abc.png" 内容类型:image/png

------WebKitFormBoundarysDMcWqKZNsayiMSX 内容处置:表单数据;名称="foo"

{ ... } ------WebKitFormBoundarysDMcWqKZNsayiMSX--

我哪里做错了?感谢观看和回答!

注意:HttpOption 有 Content-type: multipart/form-data,我也尝试使用 @RequestPart 但结果还是一样

更新:对不起,我忘了显示我的 POST 方法参数 这是完整版

public add(formData: any, apiURL: string): Promise<any> { 
        console.log(formData)
        return new Promise((resolve, reject) => {
            this.httpClient
                .post<any>(this.baseURL + apiURL + "/add", formData, this.httpOptions)
                .subscribe((response: any) => {
                    resolve(response);
                }, reject);
        });
    }

我所做的是在我整理好我的 formData 之后,我将它传递给上面的 add 方法来调用 API

【问题讨论】:

    标签: java angular request parameter-passing payload


    【解决方案1】:

    我认为您没有在 http 帖子中传递 formData,请修改以下代码行

    this.httpClient
                    .post<any>(this.baseURL + apiURL + "/add", entity, this.httpOptions)
                    .subscribe((response: any) => {
                        resolve(response);
                    }, reject);
    

    如下

    this.httpClient.post<any>(this.baseURL + apiURL + "/add", formData, this.httpOptions)
                    .subscribe((response: any) => {
                        resolve(response);
                    }, reject);
    

    【讨论】:

    • 您好,感谢您的回复,我刚刚更新了我的代码,以便您更好地理解!
    猜你喜欢
    • 2017-10-23
    • 2019-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-03
    • 2017-04-06
    • 2020-04-29
    • 2019-08-23
    相关资源
    最近更新 更多