2017-05-21 4 views
2

Ich möchte die Anzahl der Dateien begrenzen, die ein Benutzer in einen Firebase-Speicherpfad hochladen kann. Hier ist meine Feuerbasis Speicher Regel:.Begrenzen der Anzahl der Dateien in einem Firebase-Speicherpfad

service firebase.storage { 
    match /b/jobsdbn.appspot.com/o { 
    match /images/Business/{userId}/{imageId} { 
     allow read 
     allow write: if request.auth.uid == userId && (request.resource == null || ((list(/images/Business/$(username)).size() <= 5) && imageId.size() < 50 && request.resource.size < 10 * 1024 * 1024 && request.resource.contentType.matches('image/.*'))) 

    } 
    } 
} 

Ich habe hinzugefügt Liste (/ images/Geschäft/$ (username)) size() < = 5 aus diesem Artikel: https://groups.google.com/forum/#!topic/firebase-talk/ZtJPcEJr0Mc

aber ich habe immer bekommen 403 und nicht sicher, ob "benutzername" eine globale Variable ist oder nicht, aber ich habe verschiedene Variablen verwendet und kann immer noch nicht funktionieren.

Antwort

4

Falls jemand eine Antwort muss ich die Lösung Funktionen unter Verwendung von Feuerbasis Wolke gefunden:

exports.getNumOfFile = functions.storage.object().onChange(event => { 
    const object = event.data; // The Storage object. 
    const fileBucket = object.bucket; // The Storage bucket that contains the file. 
    const bucket = gcs.bucket(fileBucket); 
    bucket.getFiles({ 
     prefix: "[path]", //Path like what you use to get reference of your files in storage 
    }, (error, files) => { 
     console.log(files.length); 
    }); 
}); 

Sie können weitere Optionen finden Sie hier:

https://googlecloudplatform.github.io/google-cloud-node/#/docs/storage/1.1.0/storage/bucket?method=getFiles

+1

Haben Sie einen Weg gefunden zu stoppen der Benutzer Dateien hochladen kann, wenn die Anzahl der Sicherheitsregeln überschritten wird? Oder ist dies nur eine Teilimplementierung eines Front-End-Schutzes? – johnozbay

Verwandte Themen