В теге html <a href> как вызвать сервлет перед открытием диалогового окна файла для загрузки (сохранить как)? - PullRequest
0 голосов
/ 14 апреля 2010

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

Так что, если я напишу

<a href="abc.zip".......>

затем открывается диалоговое окно файла, в котором пользователю предлагается выбрать место, где этот файл может быть сохранен

Но если я хочу, чтобы метод doGet сервлета выполнял некоторую предварительную обработку - скажем, как сборка zip-файла, то как мне сначала вызвать сервлет, а затем открыть диалоговое окно файла.

Будет ли работать следующий фрагмент?

 <a href="MyHandlerServlet;abc.zip".......>

Спасибо за вашу помощь !!

Ответы [ 2 ]

2 голосов
/ 14 апреля 2010

Я бы предпочел передать имя файла как pathinfo вместо параметра запроса, например,

<a href="MyHandlerServlet/abc.zip">

В противном случае определенный широко используемый веб-браузер, разработанный командой из Редмонда (кашель), использовал бы MyHandlerServlet в качестве имени файла во время Сохранить как . При передаче имени файла в виде pathinfo вы можете получить запрошенный файл в сервлете:

String filename = request.getPathInfo();

Вам нужно только сопоставить сервлет с /MyHandlerServlet/* вместо /MyHandlerServlet. Также см. этот базовый пример сервлета .

1 голос
/ 14 апреля 2010
 <a href="MyHandlerServlet?file=abc.zip">

Сервлет должен ответить на запрос с помощью zip-файла.

...