сделать документ доступным для скачивания через Java / сервлет - PullRequest
1 голос
/ 03 декабря 2009

Мне нужно знать, есть ли способ в java / servlet сделать документы (doc, pdf), хранящиеся в базе данных, доступными для загрузки пользователям запрашиваемым способом (см. Ниже),

например, есть веб-страница и ссылка на документ в ней

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

но хочу сделать это так: Если пользователь щелкает эту ссылку, а не остается на этой странице, должно появиться диалоговое окно загрузки с просьбой сохранить файл

URL-адрес сервлета управляет загрузкой документа, который отвечает за извлечение базы данных формы документа и делает доступным для загрузки пользователям

спасибо за ваше время и усилия

Ответы [ 4 ]

3 голосов
/ 03 декабря 2009

Вам нужно добавить следующие заголовки в ваш сервлет, чтобы сделать его загружаемым контентом, чтобы браузеры не пытались его отображать,

String value = "attachment;filename=\"" + URLEncoder.encode(filename, "UTF-8") +'"';
response.setHeader("Content-Disposition", value);
response.setHeader("Content-Transfer-Encoding", "binary");

В качестве имени файла предлагается имя файла, и пользователь может изменить его.

1 голос
/ 03 декабря 2009

Интересно, не содержит ли ваша ссылка html что-то вроде:

<a href="/foo" **target="_blank"** ....>download</href>

В противном случае он должен работать так, как вы хотите.

0 голосов
/ 03 декабря 2009

Это ошибка в IE, которая зависит от нескольких вещей, тип контента является одним из них. У нас была такая же проблема несколько лет назад, но я больше не помню правильное решение, только то, что мы боролись с этим в течение достаточно долгого времени. Попробуйте это:

  • Используйте правильный тип контента (application/pdf)
  • Если это не сработает, используйте неправильный тип файла (например, application/octet-stream), который должен указать IE оставить файл в покое. Однако у вас могут быть проблемы с расширением файла.
  • Отправить или не отправить правильный размер файла
  • Проверьте, какой режим чанкинга вы используете.

Одна из этих вещей заставила IE вести себя. Удачи.

0 голосов
/ 03 декабря 2009

Вам необходимо удалить target="_blank" из элемента <a>.

Редактировать: в соответствии с вашими комментариями: вам нужно установить Content-Disposition заголовок на attachment. Здесь вы можете найти примеры простого файлового сервлета и расширенного файлового сервлета , чтобы получить некоторую информацию.

...