3

Ich habe die folgende Firebase Cloud-Funktion, um die URL der in Google Cloud Storage gespeicherten Datei abzurufen.Erhalten Sie eine kürzere Datei-URL von Google Cloud Storage (mit Firebase Cloud-Funktionen)

const gcs = require('@google-cloud/storage')({keyFilename: 'service-account.json'}); 

exports.generateFileLink = functions.storage.object().onChange(event => { 
    const object = event.data; 
    const filePath = object.name; 
    const bucket = gcs.bucket(object.bucket); 
    const file = bucket.file(filePath); 
    const action = 'read'; 
    const expires = '03-09-2491'; 
    return file.getSignedUrl({action, expires}).then(signedUrls => { 
    console.log(signedUrls[0]) 
    }); 
}) 

Dies gibt die richtige URL zurück, aber es ist über 600 Zeichen lang. Die URL für die gleiche Datei wie in der Firebase-Webkonsole ist weniger als 200 Zeichen lang. Gibt es eine Möglichkeit, die URL mit Firebase-Admin oder Firebase-Funktionen Module abrufen, um die kürzere URL zu erhalten?

Antwort

3

Kurze Antwort ist, dass wir an einem Storage-Client firebase-admin arbeiten, aber es ist immer noch ein wenig weg. Für jetzt sind signierte URLs der Weg zu gehen, wenn Sie eine Download-URL in einer Funktion erstellen müssen.

Warum müssen Sie in der Funktion signierte URLs generieren, anstatt die von Firebase bereitgestellten Download-URLs zu verwenden? Können Sie die URL nicht über einen Client in der Funktion abrufen, und müssen Sie sie an einen anderen Ort verschieben?

+0

Ich konnte keine Methoden zum Abrufen von Download-URLs von Dateien mit einem der Firebase-Module finden. Ich brauche keine signierte URL, nur eine [URL herunterladen] (https://firebase.google.com/docs/reference/ios/firebasestorage/api/reference/Classes/FIRStorageReference#/c:objc (cs) FIRStorageReference (im) downloadURLWithCompletion :) innerhalb einer Cloud-Funktion. –

+0

Entschuldigung, lass mich mich korrigieren. Ich möchte eine signierte URL. Die Firebase-Download-URL enthält ein Token-Attribut (ca. 36 Zeichen), während der Google Cloud Storage eine Signatur (über 200 Zeichen) besitzt. Ich suche nach einer Download-URL mit einer kleineren Größe –

+0

@SalilThakur Leider unterstützen wir die Firebase-Download-URLs noch nicht über die Standard-GCS-Clients. Wie bereits erwähnt, arbeiten wir daran, dies zu lösen, aber jetzt müssen Sie die langen verwenden oder einen 'gs: //' URI speichern und die Clients eine tatsächliche Download-URL erhalten lassen. Eine andere Möglichkeit besteht darin, einen Linkverkürzer (wie bit.ly) zu untersuchen, um die volle signierte URL zu erhalten. –

Verwandte Themen