0
Dateiname wird

Wir verwenden Firebase Google Cloud Storage Bucket unsere Dateien zu speichern.Feuerbasis Google Cloud Storage Download-URL hat Ordnernamen, die

Wenn der angemeldete Benutzer möchte die Download-Datei in bestimmten Ordner Eg gehalten: 123/admin/1469611803143/123.xlsx

Die URL wird https://firebasestorage.googleapis.com/v0/b/MYWEBSITE.appspot.com/o/123%2Fadmin%2F1469611803143%2F123.xlsx?alt=media&token=whatever_alpa_numeric_token

erzeugt werden, wie ich diese Datei herunterladen der Dateiname 123% 2Fadmin% 2F1469611803143% 2F123.xlsx

und nicht 123.xlsx

sein

Wir haben versucht, Download Attribut, um die Datei zu ändern Namen

aber das hat nicht die Dateinamen

Bitte helfen

Antwort

1

Dies ist (zum Glück zu 123.xlsx mit ändern oder leider) beabsichtigtes Verhalten. Technisch Dateien in Firebase Storage mit dem vollständigen Pfad gespeichert werden (so ist 123%2Fadmin%2F1469611803143%2F123.xlsx tatsächlich der Dateiname - die Schrägstriche und Prozent Entkommen Teil des Namens sind, und werden nur als Pfadtrennzeichen in der Benutzeroberfläche dargestellt), das ist, wie wir bekommen Dieses Verhalten.

Wir sind wahrscheinlich zu ändern, wie Downloads in Zukunft arbeiten (in, dass wir den Namen gestutzt), aber wir haben damit beschäftigt Befestigungs andere Fehler gewesen und höhere Priorität Stücke Polieren.

+0

ist es eine Möglichkeit, es zu über kommen entweder durch Content-Disposition Einstellung, wie wir die Datei oder das Erzeugen von signierten URLs hochladen Dazu gehören die Antwort-Content-Disposition –

+0

Wir verwenden folgenden Code für die Einstellung von Metadaten vor dem Hochladen von Daten var metadata = { "contentType": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "Content-Disposition ":" Anhang; Dateiname = "+ Dateiname Aber diese Meta-Daten nicht gesetzt zu werden .. Wie sollen wir die Content-Disposition Metadaten setzen mit dem Dateinamen Wird diese Arbeit einstellen? –

+0

bitte erstellen Sie eine neue Frage und Fehler enthalten, usw. Es ist schwer für uns, dies ohne ein Beispiel ausprobieren, und schwerer zu erraten, was der Fehler (falls vorhanden) ist. –

3

Ich bin ziemlich neu mit Feuerbasis, aber ich erreichte dies mit dem folgenden Code:

var storageRef = firebase.storage().ref(); 
var child = storageRef.child("your path"); 
var uploadTask = child.put(<file>); 

uploadTask.on(firebase.storage.TaskEvent.STATE_CHANGED, 
function(snapshot){ 
// HANDLE TASK PROGRESS 
}, 
function(error){ 
// HANDLE ERROR 
}, 
function(){ 
// Upload successfull 
    var newMetadata = { 
    contentDisposition : "attachment; filename=" + fileName; 
    } 
    child.updateMetadata(newMetadata) 
}); 
+0

Super! Funktioniert perfekt – drdrdrdr

+0

Dies sollte die angenommene Antwort sein –

+0

Vielen Dank Julien. das hat funktioniert. –