[英]Firebase Storage - Get actual data instead of downloadURL
有什么方法可以从 firebase 存储中获取实际数据而不是 downladURL 吗? 就我而言,我将字符串(一定量的 html)存储到存储中,我想在需要时获取实际数据。
但我不知道该怎么做。 根据firebase 文档,我可以获得可下载的 url,但无法获取实际数据。
这是从存储中获取数据的函数(在测试用例中,我可以正确获取 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 请求从存储下载文件。 这是我定义的简单函数,它返回一个承诺,解析后你可以获得实际的文件/数据。
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.
Cloud Storage for Firebase APIs for JavaScript 在网络浏览器中运行,实际上并没有提供下载文件原始数据的方法。 这在 Android 和 iOS 上是不同的。 请注意,与 Android 和 iOS 等价物不同, StorageReference没有任何直接的数据访问器。 我不知道这是为什么。 将其视为您可以向Firebase 支持提交的功能请求。
您可能需要设置某种 API 端点,您的代码可以调用它,通过为您的网站提供服务的 Web 服务器或通过其他支持 CORS 的东西进行路由,以便您可以从浏览器发出跨 Web 域的请求没有安全问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.