2017-08-02 56 views
0

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存儲)?

+0

如果你看看瀏覽器的開發工具,它是否顯示一些錯誤? –

+0

@RaxWeber瀏覽器的開發工具中沒有顯示任何錯誤 – Rbar

回答

0

這結束了對我的工作:

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響應時。

目前還不清楚爲什麼第一種方法不能很好地工作,但希望這可以幫助那些面臨同樣問題的人。