angular - 上传(表单数据)请求结束后如何获取返回的数据(后端)?

我有一个监视进度的上传方法。上传工作得很好,但最后,我的后端向我发送了这个上传文件的对象(寄存器)(id等)

我不知道如何捕捉它。使用什么管道或更改为什么返回类型。

有什么帮助吗?

我的上传方法的内容

[...]

        const formData = new FormData();
        formData.append('orderDate', orderDate);
        formData.append('file', fileToUpload.data, fileToUpload.name);

        const options: any = {
            observe: 'events',
            reportProgress: true,
        };

        fileToUpload.isUploading = true;
        
        return this.http.post<HttpEvent<Object>>(url, formData, options)
            .pipe(
                map((ev: HttpEvent<Object>) => {

                    if (ev.type === HttpEventType.Response) {

                        fileToUpload.isUploading = false;

                    } else if (ev.type === HttpEventType.UploadProgress) {

                        const percentDone = Math.round((ev.loaded * 100) / ev.total);
                        fileToUpload.uploadProgress = percentDone;
                        fileToUpload.isUploading = true;
                    }
                })
            );

回答1

您必须创建 Register 接口并将其转换为 if 条件。如果可能的话,在 StackBlitz 中分享一个示例

return this.http.post<HttpEvent<Object>>(url, formData, options)
            .pipe(
                map((ev: HttpEvent<Object>) => {

                    if (ev.type === HttpEventType.Response) {

                        fileToUpload.isUploading = false;
                        console.log(ev);

                    } else if (ev.type === HttpEventType.UploadProgress) {

                        const percentDone = Math.round((ev.loaded * 100) / ev.total);
                        fileToUpload.uploadProgress = percentDone;
                        fileToUpload.isUploading = true;
                    }
                })
            );

相似文章

随机推荐

最新文章