Как проверить, загружен ли файл уже в AWS S3?

#amazon-web-services #amazon-s3 #aws-sdk-js

Вопрос:

В своем приложении я хочу предотвратить повторную загрузку файла в AWS S3. Я нашел полезный объект AWS JavaScript headObject

https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#headObject-property

Но я хочу сравнить не только имя файла, но и его содержимое.

Спасибо!

Ответ №1:

Из Общих Заголовков ответов — Amazon Simple Storage Service:

Объекты, зашифрованные с помощью SSE-S3 или открытого текста, имеют ETAG, которые представляют собой MD5-дайджест их данных

Если ваш объект соответствует этим критериям, вы можете выполнить MD5 для локального файла и сравнить его с ETag, возвращенным headObject() . Если они совпадают, то содержимое одно и то же.

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

1. предоставляет ли aws какую-либо библиотеку для расчета MD5 файла?

2. Как насчет файла, загруженного с помощью многоступенчатой загрузки?

3. ETag не является MD5 для файлов, загруженных с помощью многосоставной копии. MD5-это стандартная операция. Функции/библиотеки доступны на всех языках программирования, это не относится к AWS.

4. Привет @John Rotenstein, Можем ли мы добиться этого без использования какой-либо библиотеки третьих частей? Предоставляет ли aws какой-либо способ сравнения файла с содержимым не только по ключу?

5. Нет, функция «сравнить» не предусмотрена.