Как я могу скачать изображение, не покидая страницы? - PullRequest
0 голосов
/ 23 ноября 2010

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

Я пробовал jQuery.get("http://localhost:8080/mydownloadservlet").Запрос получен в сервлете, но изображение не загружается.То же самое работает с формой отправки.

Спасибо, Амит Патель

Ответы [ 3 ]

3 голосов
/ 23 ноября 2010

Добавьте заголовок Content-Disposition: attachment к ответу сервлета. Таким образом, клиент вынужден открыть диалог Сохранить как .

response.setHeader("Content-Disposition: attachment; filename=image.gif");

Сделайте это до записи любого байта в ответ. Для этого вам не нужен JavaScript на стороне клиента. Просто ссылка или форма, указывающая на сервлет. Клиент не покинет страницу, потому что расположение содержимого не установлено на inline.

Однако вы все еще зависите от конфигурации клиента по умолчанию, существует ли действие по умолчанию, связанное с Content-Type вложения, которое будет выполнено немедленно вместо Сохранить как . Например, в Firefox это настраивается с помощью Сервис> Параметры> Приложения . Вы не можете контролировать это со стороны сервера, но вам не следует об этом беспокоиться. Клиент решил сам, чтобы это было так.

3 голосов
/ 24 ноября 2010

После сработало.

Создал скрытый iframe.

<iframe src="" id="hiddenFrm" style="display:none;" frameborder="0"></iframe>

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

function download(url){
    jQuery("#hiddenFrm").attr("src",url);
}
0 голосов
/ 23 ноября 2010

1) Вам необходимо правильно установить заголовки HTTP:

Content-Disposition: attachment; filename=mypic.jpg

2) Вам нужно перейти на эту страницу, не делать jQuery.get, а

<a href="http://localhost:8080/mydownloadservlet">Download pic</a>

или в javascript

window.location = 'http://localhost:8080/mydownloadservlet';

Если все идет по плану, вам действительно следует покинуть страницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...