我有一个监视进度的上传方法。上传工作得很好,但最后,我的后端向我发送了这个上传文件的对象(寄存器)(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;
}
})
);