繁体   English   中英

Firebase 存储 - 获取实际数据而不是 downloadURL

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM