有什么方法可以从Firebase存储中获取实际数据而不是downladURL吗?就我而言,我将字符串(一些html)存储到存储中,我想在需要时获取实际数据。
但是我不知道该怎么做。根据{{3}},我可以获取可下载的网址,但无法获取实际数据。
这是从存储中获取数据的功能(在测试案例中,我可以正确获取url,但我需要实际数据)
// Create a reference to the file we want to download
var starsRef = storageRef.child('images/stars.jpg');
// Get the download URL
starsRef.getDownloadURL().then(function(url) {
// Insert url into an <img> tag to "download"
})
谢谢
更新2020年2月17日
我解决了我的问题,我的错误!可以使用文档中提到的ajax请求从存储中下载文件。这是我定义的简单函数,它返回一个Promise,在解决之后,您可以获得实际的文件/数据。
async updateToStorage(pathArray, dataToUpload) {
let address = pathArray.join("/");
// Create a storage ref
let storageRef = firebase.storage().ref(address);
// Upload file as string format, known as firebase task
let uploadPromise = await storageRef.putString(dataToUpload);
let url = await uploadPromise.ref.getDownloadURL();
const res = await fetch(url);
const content = await res.text();
return content;
}
const avatar = await updateToStorage(['storage', 'uid', 'avatarUrl'], avatar.png);
//avatar will be the actual image after download.
答案 0 :(得分:1)
在Web浏览器中运行的Cloud Storage for Firebase APIs JavaScript实际上没有提供下载文件原始数据的方法。这在Android和iOS上有所不同。请注意,StorageReference没有任何直接的数据访问器,这与Android和iOS的同类产品不同。我不知道为什么会这样。可以将其视为可以向Firebase support提交的功能请求。
您可能需要设置某种代码可以调用的API端点,该端点可以通过服务于您网站的Web服务器或其他支持CORS的路由进行路由,以便您可以从浏览器中发出请求跨网域而没有安全问题。