it-roy-ru.com

Загрузить файлы в определенную папку в корзине с помощью AWS SDK

Я загружаю изображения в AWS S3 с помощью набора инструментов разработчика для узла: 

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',
    };

Это работает, но как я могу сделать изображение загруженным в определенную папку в корзине? 

4
Evans

Amazon S3 - это плоская система хранения, которая фактически не использует папки.

Скорее, Ключ (имя файла) включает полный путь объекта, например:

folder1/folder2/foo.txt

Консоль управления Amazon S3 отображает содержимое сегментов внутри папок, но это искусственная конструкция (называемая common prefixes), облегчающая понимание людьми.

Итак, если вы хотите загрузить в определенную папку, просто включите полный путь в ключ , и он будет работать (или, точнее, притвориться, что работает!).

Интересный факт: вы можете скопировать в несуществующую папку, и папка будет «создана» для вас. Затем, если вы удалите объект, папка будет «удалена», потому что она на самом деле никогда не существовала!

6
John Rotenstein

На самом деле, у нас нет объекта папки в S3 и все о названии ключа. Когда вы добавляете папки в название вашего ключа, например «folder/myfile.txt», вы можете видеть это как папку в браузере S3.

Аналогичный вопрос: https://serverfault.com/questions/435827/what-is-the-difference-between-buckets-and-folders-in-Amazon-s3

0
Reza Mousavi

AWS S3 не имеет структуры папок. это показывает, как папка внутри корзины S3, но это структура Key . Я использовал команду copy в одной из моих работ. Копирование файла в папку S3 Bucket.

aws s3 cp myapp.Zip s3: // $ S3_BUCKET_NAME/имя_папки/имя_файла

Пример

aws s3 cp myapp.Zip s3: // $ S3_BUCKET_NAME/MyFolder/MyFileName

Нет необходимости создавать какую-либо папку в AWS S3 bucket, она создаст определенную папку, если она не существует

Приведенный выше код копирует файл myapp.Zip в папку - MyFolder из S3 bucket с именем файла MyFileName

0
Gaurav Upadhyay