Разница между upload () и putObject () для загрузки файла в S3?

amazon-web-services amazon-s3

19265 просмотра

3 ответа

8970 Репутация автора

В классе aws-sdk S3какая разница между upload()и putObject()? Кажется, они делают то же самое. Почему я могу предпочесть одно другому?

Автор: callum Источник Размещён: 18.07.2016 05:16

Ответы (3)


28 плюса

9875 Репутация автора

Разница между использованием AWS SDK upload()и putObject()param заключается в следующем:

  • Если указанный MD5 по завершении загрузки не совпадает, он повторяет попытку.
  • Если размер файла достаточно велик, он использует многочастную загрузку для параллельной загрузки частей.
  • Повторить на основании настроек повторных попыток клиента.
  • Вы можете использовать для отчетов о прогрессе.
  • Устанавливает ContentType на основе расширения файла, если вы его не предоставите.
Автор: error2007s Размещён: 18.07.2016 05:29

25 плюса

4577 Репутация автора

upload()позволяет вам контролировать, как ваш объект загружается. Например, вы можете определить параллелизм и размер части.

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

Одно конкретное преимущество, которое я обнаружил, заключается в том, что upload()он принимает поток без определенной длины контента, тогда как putObject()нет.

Это было полезно, так как у меня была конечная точка API, которая позволяла пользователям загружать файл. Фреймворк доставил файл на мой контроллер в виде читаемого потока без длины контента. Вместо того, чтобы измерять размер файла, все, что мне нужно было сделать, это передать его прямо на upload()вызов.

Автор: rlay3 Размещён: 05.09.2016 01:22

4 плюса

100 Репутация автора

Когда я искал ту же информацию, я наткнулся на: https://aws.amazon.com/blogs/developer/uploading-files-to-amazon-s3/

Этот источник является немного устаревшим (ссылки вместо upload_file()и put()- или , может быть , это рубин SDK), но похоже , что putObject()предназначен для небольших объектов , чем upload().

Он рекомендует upload()и указывает, почему:

Это рекомендуемый метод использования SDK для загрузки файлов в корзину. Использование этого подхода имеет следующие преимущества:

  • Управляет многокомпонентной загрузкой объектов размером более 15 МБ.
  • Правильно открывает файлы в двоичном режиме, чтобы избежать проблем с кодированием.
  • Использует несколько потоков для параллельной загрузки частей больших объектов.

Затем охватывает putObject()операцию:

Для небольших объектов, вы можете использовать #putвместо этого.

РЕДАКТИРОВАТЬ: у меня были проблемы с .abort()операцией на моем .upload()и нашел это полезным: прервать / остановить загрузку amazon aws s3, aws sdk javascript

Теперь мои различные другие события с https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Request.html также запускаются! У .upload()меня был только httpUploadProgress.

Автор: Doug Размещён: 20.02.2018 08:16
Вопросы из категории :
32x32