Как получить полный URL с помощью getDownloadURL () (с токеном)? - PullRequest
0 голосов
/ 19 июня 2019

Необработанный отказ от обещания: FirebaseStorageError {code_: «хранилище / объект-не найден», message_: «Firebase Storage: объект 'k91a73uzb99' не существует.", ServerResponse_: "{↵" error ": {↵" code ": 404, ↵" message ":" Нет… не получить объект ", ↵" статус ":" GET_OBJECT "↵} ↵}", name_: "FirebaseError"}

export class ReportComponent implements OnInit {

  ref: AngularFireStorageReference;
  task: AngularFireUploadTask;
  newUrl: Observable<string>;

  constructor(private firesStore: AngularFireStorage,
              ) { }

  ngOnInit() { }

  async onSelectFile(event) {
    const id = Math.random().toString(36).substring(2);

    this.ref = this.fireStore.ref(id);
this.task = this.ref.put(event.target.files[0]); /*
        .snapshotChanges()
            .subscribe( (value) => {
            }); */

this.uploadPercent = this.task.percentageChanges();
// get notified when the download URL is available
this.task.snapshotChanges().pipe(
      finalize(() => {
        this.newUrl = this.ref.getDownloadURL();
        console.log(this.newUrl);
      })
).subscribe();

}

Ожидаемое: https://firebasestorage.googleapis.com/v0/b/< storageBucket> / o / ? Alt = media & token = <........>

Фактический: https://firebasestorage.googleapis.com/v0/b/< storageBucket> / o /

1 Ответ

0 голосов
/ 19 июня 2019

В сообщении об ошибке указано «хранилище / объект не найден» и «объект 'k91a73uzb99' не существует».Это означает, что файл, который вы загружаете со следующей строкой кода:

this.ref = this.firesStore.ref(id);
this.task = this.ref.put(event.target.files[0]);

, еще не завершил загрузку.Вы пытаетесь получить URL-адрес для загрузки до окончания загрузки:

this.newUrl = await this.firesStore.ref(id).getDownloadURL();

Вы захотите следовать примеру кода из документации , который использует возвращенный AngularFireUploadTask, чтобы дождаться завершения загрузкипрежде чем получить доступ к его URL загрузки.Итак, все будет примерно так:

this.uploadPercent = task.percentageChanges();
// get notified when the download URL is available
task.snapshotChanges().pipe(
    finalize(() => this.newUrl = this.ref.getDownloadURL() )
 )
.subscribe()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...