Реализация загрузочного сервлета для iPad - PullRequest
2 голосов
/ 27 марта 2019

Я реализовал сервлет загрузчика с использованием Java, как указано:

Реализация простого сервлета загрузки файлов

Требование заключается в том, что на стороне браузера файл должен автоматически загружаться, а не вызываться щелчком якоря. На ответ ajax я звоню

document.location = "downloadServlet?fileId=foo"

Проблема в том, что он отлично работает для всех настольных браузеров и мобильных устройств Android. Но когда устройство представляет собой планшет iPad, и Chrome, и Safari не загружают файл, например, если файл представляет собой текстовый файл, содержимое выгружается на страницу, и моя рабочая страница теряется. Как я могу заставить файл загружаться, а не показывать содержимое? Даже если, к примеру, попробовать zip-файл, браузер планшета показывает другую страницу и портит рабочую страницу. Я хочу, чтобы браузер загружал его так, как будто выполнял SaveAs для всех типов файлов.

Поскольку document.location изменяет всю страницу на iPad, я изменил ее на привязку, но, поскольку она должна запускаться автоматически, я запускаю событие click с помощью

<a href="downloadServlet?.." target="_blank" rel="noopener" id="downloadAnchor" />

document.getElementById("downloadAnchor").click()

Но тогда блокировщики всплывающих окон предотвращают событие click.

...