Вопрос по javascript, java, html, spring-mvc, download – Как сделать так, чтобы файлы загружались вместо открытия в браузере?

4

Я новичок, я хочу, чтобы файлы загружались, когда пользователь нажимает на опцию загрузки, открывающуюся в браузере, а не на опцию загрузки, такую как «Сохранить как / open».

Response.AddHeader("Content-disposition", "attachment; filename=" + Name);

Но я не знаю, где и как использовать. На самом деле, я получаю значение url из написанного запроса, который возвращает url как один из объектов bean-компонента, хранящегося в arraylist (этот список имеет другие значения также с url). У меня есть значения URL внутри arraylist в виде боба, как и

type=.pdf
release date=12/3/08
name=hai.pdf
url=/files/en/soft/doc/docs/hai.pdf

Я получаю этот список массивов в моем контроллере, как это

ArrayList details = dao.getdetails(Bean.getNumber());

и передать это в вид, как это

Map.put("details", details);
modelView.setViewName("details_list");
modelView.addAllObjects(Map);
return modelView;

в JSP я повторил этот список массивов и отображает содержимое, как это

Type    name            Release Date            
.txt    hai.pdf     May 21st 2012   Download

.txt    hello.txt   May 21st 2012   Download

Для загрузки я использовал как это в JSP

<td colspan="2" valign="top">                           
<a href="${details.Url}"/>
<img src="/images/download.gif" alt="Download" border="0" align="right"></a>
</td>

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

response.setHeader("Content-Disposition", "attachment;");

где добавить выше, для моего требования, или если я могу сделать с любым сценарием Java также. Пожалуйста, помогите мне в решении выше.

@Derek: да, но как реализовать в соответствии с моим требованием anto
Боже мой, я уже видел этот вопрос много раз. Derek 朕會功夫
Какой язык вы там используете? Джава? JavaScript? PHP? Derek 朕會功夫
@Japs: Не могли бы вы помочь мне anto
@Derek: Java Spring-MVC, я пометил то же самое. Пожалуйста, обратитесь к моему посту. Если вы можете использовать javascript, также предложите мне то же самое, как реализовать. anto

Ваш Ответ

3   ответа
-1

response.setHeader (& quot; Content-Type: application / force-download & quot;);

Спасибо, но я не знаю, куда добавить? если я добавлю это в контроллер, он показывает всю страницу в качестве опции загрузки, которую я хочу только по щелчку загрузки, он должен перейти к загрузке anto
5

Create a web Filter (or this way ) Map this filter to the PDF URL. In the doFilter() method, set the response header for content download.

Пример :

public void doFilter(ServletRequest request, 
   ServletResponse response, FilterChain chain)
   throws IOException, ServletException {

          String name = request.getAttribute("filename");

           response.addHeader("Content-disposition", "attachment; filename=" + name);
           chain.doFilter(request, response);


}

Вы можете установить имя файла в качестве атрибута запроса (reqest.setAttribute ()) из вашего класса контроллера

Фильтры довольно стандартны в веб-стеке Java.

@yglodt, спасибо. Я исправил это.
Вероятно, это должно быть addHeader () вместо addDateHeader () ... :-)
0

Предположим, что если header это image / png, то браузер покажет это. Таким же образом, если вы отправляете одно и то же изображение с помощью application / octet-stream, браузер заставит его загрузить.

взглянутьhttp://en.wikipedia.org/wiki/Byte_stream

В проекте я выяснил, что отправка запроса из браузера отличается.

Если вы загружаете изображение из Firefox или IE, тогда оно будет загружать их как image / png везде, где chrome загружает их как application / octet-stream.

Можете ли вы предложить по моему требованию. anto
Я не уверен, как вы можете реализовать это в Java. Если вы измените Content-Type в Response на application / octet-stream, то браузер обязательно заставит его скачать. видите, я нашел еще один вопрос в SOstackoverflow.com/questions/186867/…
Пожалуйста, любой может помочь мне в соответствии с моим требованием. Я знаю, что мне нужно использовать response.setHeader (& quot; Content-Disposition & quot ;, & quot; attachment; filename = _blank_ & quot;); но в соответствии с моим требованием. Пожалуйста, любой может прочитать мой пост и помочь. Дайте мне точно, где мне нужно добавить и что мне нужно добавить anto

Похожие вопросы