代码之家  ›  专栏  ›  技术社区  ›  Rafael de Castro

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

  •  0
  • Rafael de Castro  · 技术社区  · 3 年前

    我有一个监控进度的上传方法。 上传工作正常,但最后,我的后端会向我发送一个上传文件的对象(寄存器)(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 回复  |  直到 3 年前
        1
  •  1
  •   Pavan Jadda    3 年前

    您必须创建 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;
                        }
                    })
                );