【发布时间】:2022-08-06 03:44:05
【问题描述】:
我想上传多个文件。在上传之前,我需要发布一个返回 personId 的请求,以便我可以将此 personId 链接到后端的上传文件。
postOnboardingRequestDto$ 创建一条记录,但未保存文件。 postSingleFormData$ 未执行。任何帮助或指向正确方向将不胜感激。
postOnboardingRequestDto$ = (onboardingRequestDto) => this.onboardingService.postOnboardingRequestDto(onboardingRequestDto);
postSingleFormData$ = (personId, formData) => this.httpClient.post<SaveResponse>(`/v2/api/onboarding/person/${personId}/document/DOCUMENT_TYPE`, formData);
confirmOnboardingRequest() {
this.onboardingRequestIsSubmitted = true;
this.postOnboardingRequestDto$(this.onboardingRequestDto).pipe(
mergeMap((onboardingRequestDto) => from(this.selectedFiles).pipe(
map(file => {
console.log(`file - ${file.name}`);
const formData = new FormData();
formData.append(file.name, file);
this.postSingleFormData$(onboardingRequestDto.onboardingPersonId, formData);
})
)
)
).subscribe((res) => console.log(`res ${JSON.stringify(res)}`));
}
-
它不受流管道的约束。您应该使用管道处理它并使用 mergeMap 绑定到流
-
尝试订阅它。对于所有 HttpClient 方法,该方法不会开始其 HTTP 请求,直到您在该方法返回的 observable 上调用 subscribe()。
-
@derstauner,您不应该在管道内进行订阅。那是个坏习惯
-
您没有从地图中返回任何内容,这可能是第一个问题
-
postSingleFormData$()从未订阅过