2017-05-09 1 views
0

Je télécharge des fichiers de mon serveur vers mon compartiment foobar. Le chemin du fichier téléchargé est foobar/uploads/avatars/123456789.jpg.Rendre les fichiers lisibles publiquement, mais pas le seau entier

Je souhaite que les utilisateurs puissent accéder à ce fichier via un lien https public comme https://storage.googleapis.com/foobar/uploads/avatars/123456789.jpg. Le lien doit être accessible sans se connecter à un compte google. I ne veulent pas veulent que les utilisateurs puissent parcourir le seau entier par un lien comme https://storage.googleapis.com/foobar/, https://storage.googleapis.com/foobar/uploads/avatars/ ou quelque chose de différent.

J'utilise @google-cloud/storage pour télécharger les fichiers. Comment puis-je atteindre ces paramètres avec ACL?

Répondre

2

Pour un objet existant:

file.makePublic(function(err, apiResponse) {}); 

Lors du téléchargement d'un nouvel objet, utilisez l'option public, qui est l'équivalent de la spécification options.predefinedAcl = 'publicRead'. Selon la façon dont vous effectuez le téléchargement, vous pouvez modifier votre appel createWriteStream comme suit:

file.createWriteStream({public: true, metadata: {...}})