Comment créer un dossier ou une clé sur s3 à l'aide d'AWS SDK pour Node.js?
Je suis en utilisant le SDK AWS pour Node.js pour créer un dossier ou une touche sur s3. J'ai cherché sur google, mais je n'ai rien eu. Quelqu'un sait comment je peux créer un dossier dans mon seau avec SDK AWS pour Node.js?
et comment pouvez-vous vérifier si ce dossier existe dans votre seau déjà?
si vous utilisez console.aws.amazon.com
vous pouvez créer un dossier dans votre seau facilement. il semble que je n'ai pas le comprendre comment le créer avec le SDK AWS pour Node.js?
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
S3 n'a pas de dossiers ou de fichiers; il a des seaux et des objets. Les seaux sont utilisés pour stocker des objets, et les objets comprennent des données (qui peut être un fichier) et des métadonnées (informations sur les données).
Vous n'avez pas besoin de pré-créer une structure de dossiers dans S3. Vous pouvez simplement mettre un objet avec la clé=autos/ford/berline/focus.png, même si autos/ford/berlines/n'existe pas. Dans ce cas:
la putObject appel de créer un objet à autos/ford/berline/focus.png mais il pas créer tout ce qui représente l'intermédiaire de la structure de dossier de voitures/ford/berlines/.
la réelle structure de dossier n'existe pas, mais est implicite par le biais de votre utilisation de delimiter=/dans vos appels à listObjectset les dossiers seront retournés dans CommonPrefixes, alors que les fichiers seront retournés dans les Contenus.
vous ne serez pas en mesure de tester pour les berlines sous-dossier à l'aide de headObject parce que les voitures/ford/berlines/n'existe pas (il n'est pas un objet). Au lieu de cela, vous avez deux options:
Il est, cependant, possible de créer un S3 objet qui représente un dossier, si vous le voulez vraiment. Pour créer des dossier dans un seau nommé mybucket, vous pouvez émettre une putObject appel avec seau=mybucket et key=mondossier/. Remarque le trailing slash. Dans ce cas:
le dossier est en fait un zéro de la taille de l'objet dont la clé se termine en /. Notez que si vous laissez au large de la fuite /ensuite, vous aurez un zéro de la taille de l'objet, qui semble être un fichier plutôt que dans un dossier.
vous pouvez tester la présence de dossier/sous-dossier/dans mybucket par l'émission d'un headObject appel avec seau=mybucket et key=dossier/sous-dossier/.
Enfin, notez que votre dossier délimiteur peut être quelque chose que vous aimez, par exemple +, car il est tout simplement partie de la clé et n'est pas réellement un séparateur de dossier (il n'y a pas de dossiers). Vous pouvez varier votre dossier délimiteur de listObjects un appel à l'autre si vous le souhaitez.
Le code de @user2837831 ne semble pas fonctionner plus, probablement avec la nouvelle version de sdk javascript. Donc, je suis en ajoutant ici la version de code que j'utilise pour créer un dossier à l'intérieur d'un seau à l'aide de node.js. Cela fonctionne avec les 2.1.31 sdk. Ce qui est important, c'est le '/' à la fin de la valeur de la Clé dans les params - l'aide qu'il pense que vous êtes en train de créer un dossier et non un fichier.
Un dossier dans un seau est juste un autre seau. Ainsi, vous pouvez utiliser
headBucket
pour vérifier si elle existe et de le créer aveccreateBucket
si elle ne le fait pas. Quelque chose comme ceci:==== Mise à jour 2017-02-22 ====
Comme souligné dans le commentaire, c'est manquer de pointe. En 2013, je suppose que cela fait suite à un "dossier" en cours de création (autant que le S3 de l'INTERFACE utilisateur est concerné).
Si vous exécutez le dessus avec de l'actuelle AWS SDK, il va créer un objet vide à la clé "folderInBucketA" seau "bucketA". Je ne pense pas que cela soit utile à quelqu'un, de sorte veuillez ignorer cette réponse.
Je trouve que nous n'avons pas besoin explicite de la création d'un répertoire d'appel plus.
Du suivant fonctionne pour moi et crée automatiquement une hiérarchie de répertoire que j'en ai besoin.