2012-06-11 80 views
4

我是一個新的bie,我想要下載文件時用戶點擊下載選項它在瀏覽器中打開,而不是下載選項,如保存爲/ open.Here我提到的相同和每個他們建議使用的地方如何讓文件下載而不是在瀏覽器中打開?

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

但我不知道在哪裏以及如何使用。 實際上,我從查詢中得到的url值作爲存儲在arraylist中的bean的對象之一返回url(此列表還有其他值也與url)。 我有ArrayList中爲bean中的URL值像

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> 

這裏下載其browser.I開放的點擊需要用它來代替下載。 請幫我在如何使用或處理

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

在哪裏添加上面我的要求,或者如果我可以與任何Java腳本做also.Please幫我解決以上。

+0

@Japs:你能幫我嗎 – anto

+0

哦,我的天啊,我已經看過這個問題很多次了。 –

+0

@Derek:是的,但是如何根據我的要求執行 – anto

回答

-1

只是嘗試添加頁眉

response.setHeader( 「內容類型:應用/武力下載」);

+0

:謝謝,但我不知道在哪裏添加?我在控制器中添加它顯示整個頁面作爲下載選項,我只想點擊下載它應該導航到下載 – anto

0

這取決於瀏覽器獲得響應的標題。

假設頁眉是圖片/ png,那麼瀏覽器會顯示它。同樣的方法,如果你發送相同的圖像與應用程序/八位字節流,然後瀏覽器將強制下載它。

看看http://en.wikipedia.org/wiki/Byte_stream

在一個項目中,我必須弄清楚,從瀏覽器發送請求是不同的。

如果你從Firefox或IE上傳圖片,那麼它會以圖片/ png的形式將它們上傳,無論哪裏chrome將它們作爲application/octet-stream上傳。

+1

可以請你根據我的要求建議。 – anto

+0

我不知道如何在Java中實現它。如果您更改Content-Type in response/octet-stream,那麼瀏覽器肯定會強制下載它。看到我發現另一個問題在SO中http://stackoverflow.com/questions/186867/what-c​​ontent-type-to-force-download-of-text-response – ankit

+0

請任何人都可以幫我按我的要求。我知道我需要使用response.setHeader(「Content-Disposition」,「attachment; filename = _blank_」);但根據我的要求。請任何人可以閱讀我的文章和幫助。我確切地說,我需要添加,我需要添加什麼 – anto

5

這裏是做這件事的一種方法:

  1. 創建Web Filter(或this way
  2. 地圖這個過濾器的PDF URL。
  3. doFilter()方法中,設置內容下載的響應標頭。

例子:

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 Web堆棧相當標準。

+0

它應該可能是addHeader(),而不是addDateHeader()... :-) – yglodt

+0

@yglodt,謝謝。我糾正了它。 – Santosh

相關問題