Я пытаюсь создать подписанный URL-адрес для загрузки файла из корзины AWS S3. Моей лямбда-функции Node.JS я передаю ей имя файла, и он создаст подписанный URL-адрес, который я затем запускаю на стороне клиента для загрузки файла. Это хорошо работает для файлов .docx, но не работает для .txt. Вместо этого, подписанный, предоставленный при нажатии, открывает файл в браузере / консоли. Нужно ли что-то делать по-другому при создании подписанного URL для работы с файлами .txt?
Я попытался устранить проблему и считаю, что это разница в типах файлов. Первоначально я думал, что это может быть связано с именами файлов и управляющими символами, влияющими на него, но я переименовал файл .txt и удалил его из любых специальных символов, и он все еще не работает. Проблема также не вызвана различиями в размерах файлов, так как я создал два идентичных файла (один .docx и другой .txt) и файл .docx, загруженный, как и ожидалось. Файл .txt не будет.
Вот код, который я использую для загрузки файлов из корзины S3
//creates signed url that is returned to client side
const url = s3.getSignedUrl('getObject', {
Bucket: myBucket,
Key: myPassedInKey,
Expires: signedUrlExpireSeconds
});
responseBody = {
success: true,
url: url
};
//give the signed url and it will download it
function download(url) {
$('<iframe>', { id: 'idown', src: url }).hide().appendTo('body').click();
}
Я ожидаю, что файл загрузит файл в папку загрузки, но это не так. При отладке, если вы вводите подписанный URL в браузер, он просто открывает файл на странице браузера, а не загружает, как это происходит с файлами .docx
EDIT
Я считаю, что мой вопрос отличается от предложения ниже. Я ищу, чтобы выяснить, почему создание подписанного URL-адреса работает, как ожидается, для файла .docx, а не для .txt.