火力地堡下载图片(不调用存储)
问题描述:
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
});
然而,我已经有一个网址,并且想要下载图片而不需要调用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存储)?
答
这结束了对我的工作:
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();
这实质上创建一个a href
给我的网址,然后点击a href
编程收到xhr
响应时。
目前还不清楚为什么第一种方法不能很好地工作,但希望这可以帮助那些面临同样问题的人。
如果你看看浏览器的开发工具,它是否显示一些错误? –
@RaxWeber浏览器的开发工具中没有显示任何错误 – Rbar