Как получить локальный файл при загрузке его в amazon aws s3?

#amazon-web-services #amazon-s3

#amazon-веб-сервисы #amazon-s3

Вопрос:

Это решение, которое я нашел в Интернете: [https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/s3-example-photo-album.html ]

 function addPhoto(albumName) {
  var files = document.getElementById('photoupload').files;
  if (!files.length) {
    return console.log('Please choose a file to upload first.');
  }
  var file = files[0];
  var fileName = file.name;
  var albumPhotosKey = encodeURIComponent(albumName)   '//';

  var photoKey = albumPhotosKey   fileName;
  s3.upload({
    Key: photoKey,
    Body: file,
    ACL: 'public-read'
  }, function(err, data) {
    if (err) {
      return console.log('There was an error uploading your photo: ', err.message);
    }
    console.log('Successfully uploaded photo.');
    viewAlbum(albumName);
  });
}
  

Однако в моей текущей среде нет такого понятия, как «документ». Я действительно не знаю, как работает «документ». Могу ли я включить «document» в мою текущую среду? Или я могу использовать что-то другое для получения локального файла [изображения]? Большое спасибо!

s3.загрузить:https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#upload-property

Ответ №1:

Вы должны указать, какова ваша среда. document объект имеет смысл только в HTML, веб-странице, запущенной в браузере. Если вы работаете не в браузере, а автономно, вы, вероятно, используете Node.js .

Как говорится в документации, Body параметром может быть буфер, типизированный массив, большой двоичный объект, строка или ReadableStream.

Итак, простая загрузка локального файла в Node.js может выглядеть следующим образом:

 var fs = require('fs');
var stream = fs.createReadStream('/my/file');

s3.upload({
   Bucket: 'mybucket',
   Key: 'myfile'
   Body: stream
}, function(err, data) {
   if (err) return console.log('Error by uploading.', err.message);
   console.log('Successfully uploaded.');
});
  

Комментарии:

1. Большое спасибо! Это то, что я ищу.

Ответ №2:

Объектная модель документа (DOM) — это кроссплатформенный и независимый от языка интерфейс прикладного программирования, который обрабатывает HTML, XHTML или XML-документ как древовидную структуру, в которой каждый узел является объектом, представляющим часть документа.

DOM представляет документ с логическим деревом. Каждая ветвь дерева заканчивается узлом, и каждый узел содержит объекты. Методы DOM предоставляют программный доступ к дереву; с их помощью можно изменять структуру, стиль или содержимое документа. К узлам могут быть прикреплены обработчики событий. После запуска события выполняются обработчики событий

ИСТОЧНИК: https://en.wikipedia.org/wiki/Document_Object_Model

Это всего лишь корневой контекст, используемый для доступа к DOM после загрузки страницы в браузер.

Пример просмотра события загрузки модели документа:

 document.addEventListener("DOMContentLoaded", function(event) {
    // - Code to execute when all DOM content is loaded. 
    alert("LOADED!");
});