web-dev-qa-db-fra.com

Téléchargez des fichiers dans un dossier spécifique du compartiment avec AWS SDK

Je télécharge des images sur AWS S3 à l'aide de la boîte à outils du développeur pour le noeud: 

const aws = require('aws-sdk');

const s3Bucket = process.env.S3_BUCKET;
    const s3 = new aws.S3({
      signatureVersion: 'v4',
      region: process.env.S3_REGION,
      accessKeyId: process.env.S3_ACCESS_KEY_ID,
      secretAccessKey: process.env.S3_SECRET_ACCESS_KEY,
    });

    const s3Params = {
      Bucket: s3Bucket,
      Key: filename,
      Expires: 60,
      ContentType: filetype,
      ACL: 'public-read',
    };

Cela fonctionne, mais comment puis-je faire en sorte que l'image soit téléchargée dans un dossier spécifique du compartiment? 

4
Evans

Amazon S3 est un système de stockage à plat qui n'utilise pas réellement de dossiers.

Plutôt, la clé (nom du fichier) inclut le chemin complet de l'objet, par exemple:

folder1/folder2/foo.txt

La console de gestion Amazon S3 affiche le contenu du compartiment dans les dossiers, mais il s'agit d'une construction artificielle (appelée préfixes communs ) facilitant la compréhension de l'utilisateur.

Donc, si vous souhaitez charger dans un dossier particulier, il suffit de inclure le chemin complet dans la clé et cela fonctionnera (ou, plus précisément, prétendra fonctionner! ).

Fait amusant: vous pouvez copier dans un dossier qui n'existe pas et le dossier sera «créé» pour vous. Ensuite, si vous supprimez l'objet, le dossier sera «supprimé», car il n'a jamais existé!

6
John Rotenstein

En fait, nous n'avons pas l'objet dossier dans S3 et tout le nom de la clé. Lorsque vous mettez le dossier aime dans le nom de votre clé, par exemple "folder/myfile.txt", vous pouvez le voir comme un dossier sur le navigateur S3.

La question similaire: https://serverfault.com/questions/435827/what-is-the-difference-between-buckets-and-folders-in-Amazon-s3

0
Reza Mousavi

AWS S3 ne possède pas la structure de dossiers. il se présente comme un dossier dans le compartiment S3 mais c'est la structure de clé. J'ai utilisé la commande copy dans l'un de mes travaux. copie du fichier dans le dossier du compartiment S3.

aws s3 cp myapp.Zip s3: // $ S3_BUCKET_NAME/NomDossier/NomFichier

Exemple

aws s3 cp myapp.Zip s3: // $ S3_BUCKET_NAME/Mon dossier/Mon dossier

Pas besoin de créer un dossier dans le compartiment AWS S3, il créera le dossier spécifique s'il n'existe pas.

Le code ci-dessus copie le fichier myapp.Zip dans le dossier - MyFolder du compartiment S3 avec le nom de fichier MyFileName.

0
Gaurav Upadhyay