2016-06-07 42 views
3

Ich frage mich, wie man Dateien über die URL auf den Firebase-Speicher hochladen kann (zum Beispiel). Ich verschrotte Bilder von einer Website und lade ihre URLs ab. Ich möchte diese URLs über eine foreach-Anweisung weitergeben und sie auf den Firebase-Speicher hochladen. Gerade jetzt, ich habe die Feuerbasis Upload-via-Eingang mit diesem Code arbeiten:Bild von URL auf Firebase-Speicher hochladen

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>';} 

Frage, was ich

var Datei ersetzen = evt.target.files [0];

mit, damit es mit externer URL anstelle eines manuellen Upload-Prozesses funktioniert?

var file = "http://i.imgur.com/eECefMJ.jpg"; funktioniert nicht!

+0

Es gibt keine Notwendigkeit, sie zu speichern (vielleicht nicht möglich) mit Speicher. Die Links sind Strings, speichern Sie sie in der Datenbank wie alle anderen Daten. – theblindprophet

Antwort

5

Sie müssen Firebase Storage nicht verwenden, wenn Sie lediglich einen URL-Pfad speichern. Firebase Storage ist für physische Dateien, während die Firebase Realtime Database für strukturierte Daten verwendet werden kann.

Beispiel. sobald Sie die Bild-URL von der externen Website erhalten, ist dies alles was Sie benötigen:

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

then you would store this in your json structured database: 

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

ODER

Wenn Sie möchten, um tatsächlich die physikalischen Bilder direkt von einem externen Website Speicher herunterladen dann diesen Willen erfordern eine hTTP-Anforderung und einen Klecks Antwort empfangen oder wahrscheinlich eine serverseitige Sprache ..

Javascript-Lösung erfordern: https://ausdemmaschinenraum.wordpress.com/2012/12/06/how-to-save-a-file-from-a-url-with-javascript/

PHP Lösung: Saving image from PHP URL

+0

Hey, danke fürs Antworten! Ich versuche das physische Bild zu retten! Ich werde die Vorschläge ausprobieren, die du gegeben hast! – HalesEnchanted

+0

Kein Problem! Ich spielte mit dieser ein wenig meine selbst und kam mit dieser: http://codepen.io/theConstructor/pen/vKNRdE – KpTheConstructor

+0

Hey, ich versuche, es mit Firebase zu arbeiten, aber es ist verrückt, haha. Ist das richtig? var uploadTask = storageRef.child ('trial /' + Dateiname) .put.xhr ('GET', url); – HalesEnchanted