s3.headОбъект создает неожиданный элемент

#javascript #amazon-s3

Вопрос:

Я пытаюсь загрузить некоторые данные с веб-сайта, используя aws.sdk для javascript.

Я хочу, чтобы данные отображались в папках для удобства навигации и организации для моих коллег. Я понимаю, что в S3 на самом деле нет папок, но все просто отображается в виде папки в броузере, если имя заканчивается на»/».

У меня есть следующий код для создания папки (называется альбомом, так как я следовал [этому][1] учебнику)

 function createAlbum(albumName) {
albumName = albumName.trim();
if (!albumName) {
  return alert("Album names must contain at least one non-space character.");
}

if (albumName.indexOf("/") !== -1) {
  return alert("Album names cannot contain slashes.");
}
var albumKey = encodeURIComponent(albumName);
s3.headObject({ Key: albumKey }, function(err, data) {
  if (!err) {
    return alert("Album already exists.");
  }
  if (err.code !== "NotFound") {
    return alert("There was an error creating your album: "   err.message);
  }
  s3.putObject({ Key: albumKey }, function(err, data) {
    if (err) {
      return alert("There was an error creating your album: "   err.message);
    }
    alert("Successfully created album.");
  });
});
 

}

В основном это нормально, и затем я могу загрузить кучу данных в папку под названием «Имя альбома», и все это хорошо выглядит в консоли (что в основном будет использоваться моими коллегами и мной). Однако код также создает (пустой) файл с именем, каким бы ни было «Имя альбома», см. Ниже для копирования и вставки из консоли.

 QZ2COwrbZ0kXsudR    -   August 2, 2021, 17:59:31 (UTC 01:00)    0 B Standard

QZ2COwrbZ0kXsudR/   Folder  -   - -

 

Это нежелательный результат.

Не могли бы вы объяснить мне, почему создается этот пустой файл и как я могу этого избежать?

Спасибо [1]: https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/s3-example-photo-album.html

Ответ №1:

Ах, я понял, что происходит. Код в приведенном выше фрагменте создает файл. Следующий фрагмент кода (который я не включил выше или здесь) затем загружает отдельные файлы с именем QZ2COwrbZ0kXsudR/file_name.ext , и это то, что создает каталог. Таким образом, приведенный выше код хорош для проверки предыдущего существования, но не является необходимым для фактического создания каталога. Это относится к предыдущим публикациям о том, как папки на самом деле не существуют в S3.