Amazon S3 получить файл без расширения
Я загружаю несколько изображений с различными расширениями (JPG, PNG... и т. Д.) С помощью Java Amazon TransferManager.
например: picture1.png, picture2.jpg. Я хотел бы обслужить контент без расширения, запрос get к папке / picture1 вернул бы picture1.png.
Клиент является угловым приложением
Ранее я размещал все эти изображения на EC2 и обслуживал их через APACHE с опцией Multiviews. Можно ли сделать что-то подобное с AmazonS3?
Спасибо
1 ответ
Это не работает таким образом. S3 не придает особого значения какой-либо части ключа объекта (путь + имя файла), поэтому он не имеет понятия "расширения". (Технически, S3 также не имеет реального понятия "пути", но в большинстве случаев он ведет себя так, как будто это так).
Конечно, в Интернете расширения файлов не должны иметь никакого значения - Content-Type
объявляемое должно быть единственным, что имеет значение, так что... технически... нет необходимости сохранять объекты в S3 с их расширением.
Сохраните файлы на S3 без расширения, установите Content-Type
правильно, и у вас будет именно то поведение, которое вы ищете.
Что вы можете сделать, так это перечислить все файлы из папки aws s3 следующим образом
const files = await s3Bucket.listObjects(params).promise()
Вы можете просмотреть каждый файл и сопоставить его с вашим документом и тем, что вы хотите сделать.
files.Contents.forEach(function(obj,index){
obj.Key //
})
Теперь вы можете использовать этот obj.Key для доступа к вашему файлу. obj.Key - это полный путь к вашему файлу с расширением. Вы можете выполнить поиск в этой строке или сопоставить ее с вашим файлом, а затем получить файл.