【问题标题】:uploadTask.snapshot.downloadURL not giving the download URL of the file in response [duplicate]uploadTask.snapshot.downloadURL 没有给出文件的下载 URL 作为响应 [重复]
【发布时间】:2019-02-26 11:22:58
【问题描述】:

我目前正在研究一个角度课程,我在将档案上传到 firebase 时遇到问题,我可以上传文件,但我没有得到下载 URL 作为响应:

import { Injectable } from '@angular/core';
import { AngularFireDatabase, AngularFireList,
        AngularFireObject } from 'angularfire2/database';
import * as firebase from 'firebase';
import { Archivo } from '../uploads/file.modal';
@Injectable({
  providedIn: 'root'
})
export class LoadfileService {

  private basePath: string = '/uploads';
  uploads: AngularFireList<Archivo[]>;

  constructor( public angularFireDatabase: AngularFireDatabase) { }

  pushUpload(upload: Archivo) {
    const storageRef = firebase.storage().ref();
    const uploadTask = storageRef.child(`${this.basePath}/${upload.file.name}`).put(upload.file);

    uploadTask.on(firebase.storage.TaskEvent.STATE_CHANGED,
      (snapshot) =>{
        upload.progress = (uploadTask.snapshot.bytesTransferred / uploadTask.snapshot.totalBytes * 100);
      },
      (error) => {
        console.log(error);
      },
      () => {
    // tslint:disable-next-line: deprecation
            upload.url = uploadTask.snapshot.downloadURL;
            upload.name = upload.file.name;
            this.saveFileData(upload);
          });
      }

      private saveFileData(upload: Archivo) {
        this.angularFireDatabase.list(`${this.basePath}/`).push(upload);
      }
 }

这是我在上传服务中使用的代码,它告诉我 donwloadURL 已被弃用。

我正在寻找解决方案 atm,但找不到任何有用的东西。

【问题讨论】:

    标签: javascript firebase firebase-storage angular7


    【解决方案1】:

    google了一会儿问题解决了:

          pushUpload(upload: Archivo) {
        const storageRef = firebase.storage().ref();
        const uploadTask = storageRef.child(`${this.basePath}/${upload.file.name}`).put(upload.file);
    
        storageRef.child(`${this.basePath}/${upload.file.name}`).getDownloadURL().then(ref => {
          this.urlDownload = ref;
        });
    
        uploadTask.on(firebase.storage.TaskEvent.STATE_CHANGED,
          (snapshot) =>{
            upload.progress = (uploadTask.snapshot.bytesTransferred / uploadTask.snapshot.totalBytes * 100);
          },
          (error) => {
            console.log(error);
          },
          () => {
            upload.url = this.urlDownload;
            upload.name = upload.file.name;
            this.saveFileData(upload);
          });
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-17
      • 2018-09-08
      • 1970-01-01
      相关资源
      最近更新 更多