2016-06-07 119 views
3

我想知道如何通過URL將文件上傳到Firebase的存儲中,而不是通過輸入(例如)。我從網站上刪除圖像並檢索它們的URL。我想通過一個foreach語句將這些URL傳遞給Firebase的存儲。現在,我有火力上傳,通過輸入此代碼的工作:將URL從URL上傳到Firebase存儲

var auth = firebase.auth(); 
var storageRef = firebase.storage().ref(); 

function handleFileSelect(evt) { 
    evt.stopPropagation(); 
    evt.preventDefault(); 
var file = evt.target.files[0]; 


    var metadata = { 
    'contentType': file.type 
    }; 

    // Push to child path. 
    var uploadTask = storageRef.child('images/' + file.name).put(file, metadata); 

    // Listen for errors and completion of the upload. 
    // [START oncomplete] 
    uploadTask.on('state_changed', null, function(error) { 
    // [START onfailure] 
    console.error('Upload failed:', error); 
    // [END onfailure] 
    }, function() { 
    console.log('Uploaded',uploadTask.snapshot.totalBytes,'bytes.'); 
    console.log(uploadTask.snapshot.metadata); 
    var url = uploadTask.snapshot.metadata.downloadURLs[0]; 
    console.log('File available at', url); 
    // [START_EXCLUDE] 
    document.getElementById('linkbox').innerHTML = '<a href="' + url + '">Click For File</a>';} 

問我該怎麼更換

var文件= evt.target.files [0];

與使它與外部URL而不是手動上載過程?

var file =「http://i.imgur.com/eECefMJ.jpg」;不起作用!

+0

沒有必要使用存儲來存儲它們(也許不可能)。鏈接是字符串,將它們存儲在數據庫中,就像其他數據一樣。 – theblindprophet

回答

5

如果您只是在保存url路徑,則無需使用Firebase存儲。 Firebase存儲用於物理文件,而Firebase實時數據庫可用於結構化數據。

示例。一旦你從外部站點獲得圖像的URL,這是所有你將需要:

var externalImageUrl = 'https://foo.com/images/image.png'; 

then you would store this in your json structured database: 

databaseReference.child('whatever').set(externalImageUrl); 

OR

如果要真正地從外部站點下載的物理圖像直接存儲,那麼這將需要發送HTTP請求和接收響應斑點或大概可能需要服務器側語言..

JavaScript解決方案:https://ausdemmaschinenraum.wordpress.com/2012/12/06/how-to-save-a-file-from-a-url-with-javascript/

PHP解決方案:Saving image from PHP URL

+0

嘿,謝謝你的回覆!我正試圖保存物理圖像!我會嘗試你給的建議! – HalesEnchanted

+0

沒問題!我玩了這個小小的我自己,並想出了這個:http://codepen.io/theConstructor/pen/vKNRdE – KpTheConstructor

+0

嘿,我試圖讓它與Firebase一起工作,但它的行爲瘋狂哈哈。這是正確的嗎? var uploadTask = storageRef.child('trial /'+ filename).put.xhr('GET',url); – HalesEnchanted