我正在使用Angularfire2指南上传图片:https://github.com/angular/angularfire2/blob/master/docs/storage/storage.md
我已经把它付诸实践,我已经设法上传,但只有一个图像每个行动。是否有可能加载多个图像?我如何才能做到这一点?
component.ts
import { Component, OnInit } from '@angular/core';
import { AngularFireStorage } from 'angularfire2/storage';
import { Observable } from '../../../../node_modules/rxjs';
import { finalize } from 'rxjs/operators';
@Component({
selector: 'app-root',
template: `
<input type="file" (change)="uploadFile($event)" />
<div>{{ uploadPercent | async }}</div>
<a [href]="downloadURL | async">{{ downloadURL | async }}</a>
`
})
export class AppComponent {
uploadPercent: Observable<number>;
downloadURL: Observable<string>;
constructor(private storage: AngularFireStorage) {}
uploadFile(event) {
const file = event.target.files[0];
const filePath = 'name-your-file-path-here';
const fileRef = this.storage.ref(filePath);
const task = this.storage.upload(filePath, file);
// observe percentage changes
this.uploadPercent = task.percentageChanges();
// get notified when the download URL is available
task.snapshotChanges().pipe(
finalize(() => this.downloadURL = fileRef.getDownloadURL() )
)
.subscribe()
}
}
2条答案
按热度按时间mnemlml81#
对于未来的读者,这里是我如何解决多个图像上传使用Angular 8和Firebase后挣扎了几天:
我知道有一个使用RXJS进行异步调用的替代方法,但是我不能让它工作。这就是为什么我实现了deley()函数。
d8tt03nd2#
这是我如何处理上传多个文件到firebase云存储
1.创建接受上传文件夹/路径和要上传的文件数组的功能/服务
1.让函数使用[文件路径+日期时间+文件索引]为每个文件创建一个唯一的文件名,使用MD5散列或任何您喜欢的库。
1.创建一个主题/可观察对象以返回上载的状态。每个上载的文件在完成或出错时更新此主题
1.返回作为可观察流的主题,以订阅多个上传的结果
定义接口
上传多个图像功能
您还可以将用户唯一ID添加到MD5哈希中,以确保用户名和文件名在任何时间点都不会相同。
如何调用/使用
您可以根据需要修改接口和结构,以返回所需的任何数据