Загрузка файла Excel (.xlsx) во внешнем интерфейсе JavaScript через URL-адрес Amazon presigned

#javascript #excel #amazon-web-services #amazon-s3

#JavaScript #excel #Amazon-веб-сервисы #amazon-s3

Вопрос:

У меня есть URL-адрес Amazon S3, который передается мне из внешней службы в формате:

https://foo.s3.amazonaws.com/ProjectDownloads/foo/title.xlsx ?AWSAccessKeyId=fooamp;expires=1602279238amp;Signature=foo

Я мало работал с S3, но, насколько я понимаю, это URL-адрес, подписанный пользователем — я могу вставить его в свой браузер, и файл Excel загрузится.

Как я могу загрузить этот файл напрямую с помощью javascript (на интерфейсе, поскольку в моей системе не запущен узел)?

Я попытался сгенерировать элемент тега с помощью click — однако все мои файлы загружаются как поврежденные. Я могу загрузить файл напрямую, вставив ссылку в свой браузер, и он автоматически инициирует загрузку.

Любая помощь будет оценена.

Я пробовал следующее, но он загружает файл с ошибкой:

     var link = document.createElement('a');
    link.href = url;
    link.download = 'foo.xlsx';
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);
  

Ответ №1:

Вам не нужен JS для принудительной загрузки при нажатии на ссылку; вы можете сделать это с помощью простого HTML. И не имеет значения, что источником является URL-адрес с подписью S3 — он работает с любым URL-адресом.

<a href=“Foo.xlsx” download>click to download</a> должен сделать это за вас.

Взгляните на https://www.w3schools.com/howto/howto_html_download_link.asp для матрицы поддержки браузера.

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

1. Спасибо, Том, за вашу помощь.

2. Надеюсь, это сработало. Если это так, вы можете пометить мой ответ как принятый.