2012-06-12 152 views
1

我是新來的java.I需要下載pdf/txt/.xls或任何文件上點擊下載選項。 在我的情況下,我有數組列表中的某些值,並在jsp中顯示。 以我列表(名稱列表)IAM具有如何從url下載文件? (不在瀏覽器中打開)

name=rahul 
url=files/en/software/rahul.txt 
name=roshan 
url=files/en/software/roshan.pdf 

當我迭代(名稱列表),並顯示在JSP以上,我在我的jsp

<td valign="top">${namelist.name}</td> 

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

所以在具有許多用戶的名稱的我的JSP IAM並在url中爲它們提供相應的文件。 點擊下載文件是在瀏覽器中打開的URL http://www.xxx.com/files/en/software/roshan.pdf

但我想這是打開作爲彈出窗口要求用戶保存爲/打開選項。 當把這個url傳遞給控制器​​時,我只獲得/files/en/software/roshan.pdf的值。 我已經搜索了相同的地方,他們建議使用 response.setHeader(「Content-Disposition」,「attachment; filename =」+ name);

,所以我創建了一個名爲下載控制器和下載的請點擊我這樣映射

<a href='<c:url value="/download.sp?name=${namelist.name}&downloadUrl=${namelist.url}"/>'> 
<img src="/images/download.gif" alt="Download" border="0" align="right"></a><br/><br/> 

在這裏,在我的控制器的URL。 我唐諾究竟做了什麼,我已經寫了這樣

public ModelAndView download(HttpServletRequest request, HttpServletResponse response) throws Exception { 
     cat.debug(" download: begin"); 
     ModelAndView modelView = super.handleRequest(request, response); 
     String url = request.getParameter("downloadUrl"); 
     String name = request.getParameter("name"); 
     response.setHeader("Content-Disposition", "attachment;filename="+name); 
     String viewName = "swl_download"; 
     modelView.setViewName(viewName); 
     return modelView; 
} 

與同name.I以上是打開彈出要添加更多的控制器,使其下載點擊該文件應該是相同的文件在URL(什麼包括/在上述控制器中更改)。 請幫我解決這個問題。謝謝我提前幫助我。

+0

你是否得到下載文件名爲swl_download? –

+0

看一下鏈接:[File-download-servlet](http://www.coderanch.com/t/366358/Servlets/java/File-download-servlet)。你可以用servlet本身來做,你不需要使用spring mvc。 – Elbek

+0

@subirkumarsao:該代碼是例如獲取下載文件名稱爲rahul.txt,但如何獲得與rahul有關的網址中的文件?請幫幫我。 – Rahul

回答

1

需要查看sql_download視圖正在做什麼。

一般來說,我在視圖本身設置了內容配置。所以,我的自定義AbstractView實行看起來是這樣的:

response.setHeader("Content-disposition", "attachment; filename="+fileName); response.setContentType("application/vnd.ms-excel"); OutputStream out = response.getOutputStream(); helperClass.exportDataToExcel(data, out);

內容類型也很重要,以幫助您的瀏覽器選擇正確的應用程序加載文檔。

你應該知道這些標題只是瀏覽器的一個建議,瀏覽器可以自己的方式自由解釋它們。因此,您將無法強制所有瀏覽器顯示「打開或保存」對話框。

希望這會有所幫助。

相關問題