【问题标题】:FileUpload Multipart Springboot Error -> Required request part 'file' is not presentFileUpload Multipart Springboot 错误 -> 所需的请求部分“文件”不存在
【发布时间】:2018-04-18 20:02:49
【问题描述】:

我正在尝试使用 Angular 4.0 和 SpringBoot 应用程序上传 json 文件。我已经检查并尝试了 Stackoverflow 的其他解决方案,但我无法弄清楚确切的问题是什么。

我收到 400 BAD Request Error 消息,其中包含以下消息:所需的请求部分“文件”不存在。

我的 RestController 看起来像这样(用于测试目的),但不幸的是什么也没发生。

@RestController
@RequestMapping("/api")
public class UploadRequestResource {
....

@PostMapping("/fileupload")
@Timed
public ResponseEntity<Endpoint> FileUpload(@RequestParam("file") MultipartFile file) throws URISyntaxException {
       if (file.isEmpty()) {
          System.out.println("File is empty"); }

       System.out.println("File is not empty");

       //some logic 

       return ResponseEntity.ok() ....
    }
}

我在我的应用程序配置文件中添加了以下内容:

spring:
     http:
        multipart:
            max-file-size: 5MB
            max-request-size: 20MB

我的 HTML 文件如下所示:

<form name="editForm" role="form" novalidate (ngSubmit)="save()" #editForm="ngForm">
    ...
   <input type="radio" [(ngModel)]="form.uploadType"  name="uploadType" value="file">&nbsp;<label for="url">File</label><br>
   <input type="file" name="file" placeholder="Upload file..." (change)="onFileChange($event)" (focus)="onFileFocus()"/>
            </div>
        </div>

Angular ts 文件如下所示:

fileUpload(data): Observable<Endpoint> {
        let headers = new Headers({ 'Content-Type': 'multipart/form-data' });
        let options = new RequestOptions({ headers: headers });
        return this.http.post('/api/fileupload', data , options).map((res: Response) => {
            const jsonResponse = res.json();
            return this.convertItemFromServer(jsonResponse);
        });
    }

有人知道我应该如何解决这个错误吗?如果有任何帮助,我将不胜感激。谢谢

【问题讨论】:

  • 尝试将 POST 请求的 enctype 更新为 multipart/form-data
  • 我已经为 POST 请求将 enctype 定义为 multipart/form-data ...我已经修改了我的初始帖子 ...
  • 我说的是&lt;form&gt;标签,你可以添加属性enctype

标签: spring-boot file-upload multipartform-data multipart spring-restcontroller


【解决方案1】:

所以我找到了解决问题的方法。而不是使用 Content-Type: "multipart/form-data" 我使用了 Formdata(见下文)。

const formData = new FormData();
        formData.append('file', data, data.name);
        return this.http.post('/api/fileupload', formData).map((res: Response) => {
            const jsonResponse = res.json();
            return this.convertItemFromServer(jsonResponse);

现在它工作正常。

【讨论】:

    猜你喜欢
    • 2020-04-29
    • 2017-10-11
    • 2020-09-14
    • 2020-08-06
    • 1970-01-01
    • 2017-10-23
    • 2019-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多