Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
248 views
in Technique[技术] by (71.8m points)

Unable to upload file using Angular/Spring

The title says it all.

I need to upload files/documents to BE, somehow I just cant get it right!

Angular service

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 Controller

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

        System.out.println(file);

        return null;
    }

I have already tried a lot of other configuration, like set headers to

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

The error message is always the same:

Current request is not a multipart request

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

if your request body is instanceof FormData angular add that header for you . and you dont need to add header .

i think you have interceptor configuration to add some header to all your http requests. try to add this conditions to your interceptor class :

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...