Разница между 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()
.