2016-06-07 156 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