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

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

Ответы

Ответ 1

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

  • Если сообщенный MD5 при завершении загрузки не соответствует, он повторы.
  • Если размер файла достаточно велик, он использует многостраничную загрузку для загрузки части параллельно.
  • Повторите попытку на основе настроек повторной попытки клиента.
  • Вы можете использовать для отчетов о прогрессе.
  • Устанавливает ContentType на основе расширения файла, если вы не предоставляете он.

Ответ 2

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

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

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

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