javascript - 存储在 firestorage 中并将 url 保存在变量中

标签 javascript firebase firebase-storage

我是 Javascript 初学者。

我想要做的就是将文件存储在 Firestorage 中,然后将 URL 链接保存在变量中。 然而,现在,URL 没有被保留,我的变量是空的。

const pictureUrl = ''

// Upload picture part
   var refname = 'profile_pictures/' + "Picture" + "_" + "Name";
   let storageRef = firebase.storage().ref(refname);
   let firstFile = document.getElementById("pictureImported").files[0]
   let uploadTask = storageRef.put(firstFile).then(function(fileSnapshot) {
   fileSnapshot.ref.getDownloadURL().then(url => pictureUrl = url)
})

console.log(pictureUrl);

console.log 给出一个空行。我应该怎么做才能真正保存网址?

最佳答案

pictureUrl 只会在 then() 内有一个值,因为 getDownloadUrl() 是异步的。如果您想要 then() 方法之外的 pictureUrl,请执行以下操作:

function storeImage(firstFile){
 return new Promise((resolve, reject) => {
  let uploadTask = storageRef.put(firstFile).then((fileSnapshot)=> {
   fileSnapshot.ref.getDownloadURL().then(url => {
   pictureUrl = url;
   resolve(pictureUrl);
     });
   });
}

然后要访问url,您可以执行以下操作:

storageImage(file).then((value) => {
  console.log(value);
});

查看此处了解更多信息:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then

关于javascript - 存储在 firestorage 中并将 url 保存在变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60813076/

相关文章:

javascript - 如何在 Node.js 中进行 64 位整数运算?

android - 如何以编程方式知道是否达到 Firebase 实时数据库限制(同时连接 100 个)?

android - Firebase 图像存储 - 缩略图

javascript - 如何使用 javascript 显示 Firebase 存储中的图像?

javascript - 滚动上的停靠菜单 - 可能需要 JavaScript

javascript - 使用 Vuefire 检索 Vuejs 中的 Firebase 数据

javascript - API 发送的 Firebase 通知未在设备上收到

android - 我应该在前端还是后端连接到 firebase?

javascript - AJAX 成功返回旧结果

使用自定义声明的 Angular 和 Firebase 路线守卫