【发布时间】:2018-03-08 07:59:01
【问题描述】:
我已经创建了拖放组件来上传文件,用户可以同时上传 5 个文件,但即使我在预览中显示所有图像,我也想在收到服务器对前一个文件的响应后开始上传
使用 rxjs 和 angular(v4) 更好的方法是什么
这是我的代码:
public onFileSelected(event) {
if (event && event.type == 'uploadImageProject') {
const previews$ = Observable.from(event.files)
.filter(file => file instanceof File)
.map(file => file)
.take(5)
const previewSub = previews$.subscribe(file => {
this.previews = [];
this.addPreview(file as File);
});
this._storeSubscription.push(previewSub);
}
}
private addPreview(file: File): void {
const reader = new FileReader();
reader.onload = (event) => {
this.uploadFile(event.currentTarget['result']);
this.previews.push(event.currentTarget['result']);
};
reader.readAsDataURL(file);
}
private uploadFile(imgBase64): void {
const uploadId = UUID.UUID();
const fileToUpload = {projectId: this.projectId, upload: {file: imgBase64, id: uploadId, type:'picture', order: 0}};
this._store.dispatch(addPictureOnProject(fileToUpload));
}
目前脚本可以工作,但上传一起开始,函数 addPreview 在我的应用上显示图片,uploadFile 调度一个动作(redux)来调用服务
【问题讨论】: