我是 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/