我想知道如何從郵件服務器上根據內容配置從JSP頁面下載任何文件作爲附件。如何從JSP下載附件文件
我想在JSP頁面上創建一個鏈接,並通過點擊該鏈接用戶可以從郵件服務器下載文件。該鏈接應爲內容處理的附件類型。我怎麼能在JSP中做到這一點?
我想知道如何從郵件服務器上根據內容配置從JSP頁面下載任何文件作爲附件。如何從JSP下載附件文件
我想在JSP頁面上創建一個鏈接,並通過點擊該鏈接用戶可以從郵件服務器下載文件。該鏈接應爲內容處理的附件類型。我怎麼能在JSP中做到這一點?
我建議你稍微打破這個問題。
你知道如何從一個普通的java程序中訪問附件嗎?如何與郵件服務器等接口?如果您知道這一點,通過jsp提供可下載格式的附件應該很簡單。雖然,我強烈建議你做一個常規的servlet,因爲你可能沒有太多的使用jsp的額外機制。
只要確保你設置根據在下載這些東西的內容類型:
在JSP中:<%@page contentType="image/png" %>
在的servelt:response.setContentType("image/png");
不要使用這樣的JSP,它是食譜因爲在使用它來傳輸二進制文件時遇到麻煩,因爲<% %>
標記之外的所有空白都將被打印到響應中,這隻會破壞二進制內容。您只需在JSP中放置一個類似的HTML鏈接,然後使用servlet類執行所有處理和流式處理任務。要設置響應標題,只需使用HttpServletResponse#setHeader()
。
response.setHeader("Content-Disposition", "attachment;filename=name.ext");
你可以在這裏找到它正是這樣做的一個基本的servlet例如:FileServlet
。
URL url = new URL("http://localhost:8080/Works/images/abt.jpg");
//for image
response.setContentType("image/jpeg");
response.setHeader("Content-Disposition", "attachment; filename=icon" + ".jpg");
//for pdf
//response.setContentType("application/pdf");
//response.setHeader("Content-Disposition", "attachment; filename=report" + ".pdf");
//for excel sheet
// URL url = new URL("http://localhost:8080/Works/images/address.xls");
//response.setContentType("application/vnd.ms-excel");
//response.setHeader("Content-disposition", "attachment;filename=myExcel.xls");
URLConnection connection = url.openConnection();
InputStream stream = connection.getInputStream();
BufferedOutputStream outs = new BufferedOutputStream(response.getOutputStream());
int len;
byte[] buf = new byte[1024];
while ((len = stream.read(buf)) > 0) {
outs.write(buf, 0, len);
}
outs.close();
你爲什麼不用''?你的評價不必要的過分複雜。 – BalusC 2012-05-28 13:13:51
HttpServletResponse拼錯了。 – 2012-06-04 16:09:36
@Larry:固定:) – BalusC 2012-06-04 16:10:16