Получение URL загрузки из хранилища Firebase в Angular - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь получить URL для загрузки после загрузки моего файла в хранилище firebase. Пока я могу загрузить файл, но для URL, который я получаю неопределенным, вот мой код:

  onFileChanged(event) {

const file: File = event.target.files[0];
const metaData = {'contentType': file.type};
const storRef: firebase.storage.Reference  = firebase.storage().ref('/MyFolder/' + file.name);
const uploadTask: firebase.storage.UploadTask = storRef.put(file, metaData);
console.log('Uploading:' + file.name);

uploadTask.then((uploadSnapshot: firebase.storage.UploadTaskSnapshot) => {
 const imageUrl = uploadSnapshot.downloadURL;
 console.log('URL:' + imageUrl);
}); }

любые предложения Спасибо

Ответы [ 3 ]

0 голосов
/ 29 июня 2018

UploadTaskSnapshot больше не имеет свойства downloadURL (перейдите к документации API, чтобы убедиться в этом). Это было устранено не так давно.

Вместо этого вы должны использовать Reference.getDownloadURL () для объекта Reference для запроса URL.

0 голосов
/ 30 сентября 2018

URL для загрузки задается с помощью «snapshot.ref.getDownloadURL ()».

  encodeImageUri(imageUri, callback) {
    var c = document.createElement('canvas');
    var ctx = c.getContext("2d");
    var img = new Image();
    img.onload = function () {
      var aux:any = this;
      c.width = aux.width;
      c.height = aux.height;
      ctx.drawImage(img, 0, 0);
      var dataURL = c.toDataURL("image/jpeg");
      callback(dataURL);
    };
    img.src = imageUri;
  };


  uploadProfileImage(imageURI, path) {
    console.log("path = " + path);
    console.log("imageURI = " + imageURI);
    return new Promise<any>((resolve, reject) => {
      let storageRef = firebase.storage().ref();
      let imageRef = storageRef.child('profile').child(path);
      this.encodeImageUri(imageURI, function (image64) {
        imageRef.putString(image64, 'data_url')
          .then(snapshot => {
            console.log("snapshot = " + snapshot);
            resolve(snapshot.ref.getDownloadURL())
          }, err => {
            reject(err);
            console.log(err);
          })
      })
    })
  }
0 голосов
/ 29 июня 2018

сделал это, заменив

    uploadTask.then((uploadSnapshot: firebase.storage.UploadTaskSnapshot) => {
 const imageUrl = uploadSnapshot.downloadURL;
 console.log('URL:' + imageUrl);
});

до

  uploadTask.snapshot.ref.getDownloadURL().then(downloadURL => {
  const imageUrl = downloadURL;
  console.log('URL:' + imageUrl);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...