gpt4 book ai didi

javascript - Firebase 使用下载 URL 下载图像(不调用存储)

转载 作者:行者123 更新时间:2023-11-30 11:33:19 25 4
gpt4 key购买 nike

Firebase's documentation涵盖下载图像如果您调用存储和getDownloadURL,我可以正常工作(直接来自文档):

storageRef.child('images/stars.jpg').getDownloadURL().then(function(url) {
// `url` is the download URL for 'images/stars.jpg'

// This can be downloaded directly:
var xhr = new XMLHttpRequest();
xhr.responseType = 'blob';
xhr.onload = function(event) {
var blob = xhr.response;
};
xhr.open('GET', url);
xhr.send();

// Or inserted into an <img> element:
var img = document.getElementById('myimg');
img.src = url;
}).catch(function(error) {
// Handle any errors
});

但是,我已经有一个 URL 并且想要下载一个图像而不调用 firebase 存储。这是我的尝试:

var url = "https://firebasestorage.googleapis.com/v0/b/somerandombucketname..."
console.log(url);
// This can be downloaded directly:
var xhr = new XMLHttpRequest();
xhr.responseType = 'blob';
xhr.onload = function(event) {
var blob = xhr.response;
};
xhr.open('GET', url);
xhr.send();

但是,没有文件被下载,浏览器的开发工具也没有显示错误。

注意:我知道 URL 是正确的,因为如果我将 URL 直接输入浏览器搜索栏,我就可以访问该文件并下载它。

有谁知道如何使用已有的下载 URL 下载图像(无需像文档中那样调用 Firebase Storage)?

最佳答案

这最终对我有用:

var url = "https://firebasestorage.googleapis.com/v0/b/somerandombucketname..."
var filename = url.substring(url.lastIndexOf("/") + 1).split("?")[0];
var xhr = new XMLHttpRequest();
xhr.responseType = 'blob';
xhr.onload = function() {
var a = document.createElement('a');
a.href = window.URL.createObjectURL(xhr.response);
a.download = "fileDownloaded.filetype"; // Name the file anything you'd like.
a.style.display = 'none';
document.body.appendChild(a);
a.click();
};
xhr.open('GET', url);
xhr.send();

这实际上是为我拥有的 URL 创建一个 a href,然后在收到 xhr 响应时以编程方式单击 a href

我不清楚为什么第一种方法效果不佳,但希望这能帮助面临同样问题的其他人。

关于javascript - Firebase 使用下载 URL 下载图像(不调用存储),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45453470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com