无法使用 Angular/Spring 上传文件

Unable to upload file using Angular/Spring

标题说明了一切。

我需要上传 files/documents 到 BE,不知怎么的我就是搞不定!

Angular 服务

public saveFile(file: File): Observable<any> {
        const formData = new FormData();
        formData.append('file', file);
        
        return this.http
            .post<FormData>(`${environment.apiUrl}/save-file`, formData)
            .pipe(first());
    }

Spring 控制器

 @PostMapping(value = "/save-file")
    public ResponseEntity<Object> saveFile(@RequestParam("file") MultipartFile file) {

        System.out.println(file);

        return null;
    }

我已经尝试了很多其他配置,比如将 headers 设置为

"Content-Type": "multipart/form-data"

错误信息总是一样的:

Current request is not a multipart request

如果您的请求 body 是 instanceof FormData angular 为您添加 header 。你不需要添加 header .

我想你有拦截器配置来添加一些 header 到你所有的 http 请求。 尝试将此条件添加到您的拦截器 class :

        if (!request.headers.has("Content-Type") && !(request.body instanceof FormData)) {
            request = request.clone({
               headers: request.headers.set("Content-Type", "application/json")
            });
        }