[英]How to get files downloaded from url? (not to open in browser)
我是java的新手,我需要在單擊下載選項時下載pdf / txt / .xls或任何文件。 就我而言,我在數組列表中有某些值並顯示在jsp中。 在我的清單(名字清單)中
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中有很多用戶名和相應的文件。 點擊下載后,該文件即會在瀏覽器中打開,網址為http://www.xxx.com/files/en/software/roshan.pdf
但我希望打開此窗口,因為彈出窗口要求用戶提供另存為/打開選項。 當將此URL傳遞給控制器時,我僅獲得/files/en/software/roshan.pdf值。 我在他們建議使用response.setHeader(“ Content-Disposition”,“ attachment; filename =” + name);的每個地方都搜索了相同的內容。
所以我創建了一個名為download的控制器,點擊下載后,我將網址映射為這樣
<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/>
在我的控制器中。 我不知道該怎么辦,我已經寫了這樣
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;
}
上面是打開具有相同名稱的彈出窗口。我想在控制器中包含更多內容,以便在單擊下載時文件應與url中的文件相同(要在上面的控制器中包含/ change)。 請幫助我解決這個問題。謝謝我的幫助。
需要查看sql_download視圖正在做什么。
通常,我在視圖本身中設置內容處置。 所以我自定義的AbstractView實現看起來像:
response.setHeader("Content-disposition", "attachment; filename="+fileName);
response.setContentType("application/vnd.ms-excel");
OutputStream out = response.getOutputStream();
helperClass.exportDataToExcel(data, out);
內容類型也很重要,以幫助您的瀏覽器選擇正確的應用程序來加載文檔。
您應該知道,這些標頭僅是瀏覽器的建議,瀏覽器可以自由地以自己的方式解釋它們。 因此,您將不能強制所有瀏覽器顯示“打開或保存”對話框。
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.