【发布时间】:2020-07-11 15:57:44
【问题描述】:
我正在尝试使用 prefetchedUrl 将文件按顺序上传到 S3 存储桶。
generateUrl() 函数用于为要上传的每个文件生成一个唯一的 url。它需要一个 uniqueId(它是静态的)和一个文件名
generateUrl(uniqueId, file) {
var ext = (file.name).split(/\.(?=[^\.]+$)/);
console.log(ext);
return this.http.get<any>(`${this.baseURL}/v1/secure/upload/signed/${uniqueId}?filename=${file.name}.${ext}`);
}
fileUpload() 函数用于上传文件。它需要 generateUrl() 函数生成的唯一 url 和要上传的文件。
uploadFilesByLink(url, file) {
return this.http.put(url,file, {
headers: { "Content-Type": file.type },
reportProgress: true,
observe:'events'
})
}
现在我想做的是-
this.filesArray.forEach((file,index)=>{
this.uploadsService.generateUrl(this.uniqueId, file)
.pipe(
concatMap(res1 => this.uploadsService.uploadFilesByLink(res1.url, file))
).subscribe(res2 => console.log(this.filesArray.indexOf(file),res2));
})
但这是并行上传文件。 请帮忙。 我在google上尝试了很多解决方案。
【问题讨论】:
标签: angular amazon-s3 rxjs observable httpclient