導論:
javaWeb下載文件一般分為兩類,其中一類例如.txt,.Excel,.zip等瀏覽器可以識別的文件類型,可以利用<a><a/>標簽的鏈接實現,但是圖片的下載確比較麻煩,當使用鏈接時,瀏覽器不識別圖片的類型會將圖片打開而不是下載。實現該功能比較常見的有利用jsp下載,利用servlet下載,利用純java代碼下載。本文介紹以java代碼來實現。
利用Java代碼實現圖片的下載:
現在的企業級中大型項目一般都是利用Ajax來實現與后臺代碼的交互的,但是ajax接收二進制流比較麻煩,一般用來獲取圖片地址。本人認為使用form表單來做請求比較簡單。
jsp部分:
<iframe id="downIframe"name="downIframe" style="display:none"></iframe>
<from id="downFrom"target="downIframe"action="此處為訪問的URL">
<input type="hidden" name="pictureUrl" value="此處為系統圖片路徑"/>
</from>
注:當我們單獨使用form表單來實現時,方法會選擇跳轉到另一個頁面中,當沒有提供跳轉的目的頁面的時候,會跳轉到一個空白頁面,然后我們會想著給那個頁面提供個背景圖片,然后顯示下載成功四個大字,哈哈。。這個有點太入門了。so here使用iframe來作為form表單的目的,單獨刷新iframe區域,因為iframe僅僅存在在代碼中在頁面中看不到,所以不會影響。接下來就是java部分。
public void downPicture(HttpServletRequest request,HttpServletResponse response){
String url = request.getParameter("pictureUrl");
//獲取文件
File file = new File(url);
//將圖片讀成二進制流
FileImageInputStream fs = new FileImageInputStream (file);
int streamLength = (int)fs.length();
byte[] image = new byte[streamLength ];
fs.read(image,0,streamLength );
fs.close();
response.serHeader("Content-Type","application/octet-stream");
response.serHeader("Content-Disposition","attachment;filename=圖片名字.圖片類型后綴");
response.getOutStream().write(image );
response.getOurStream.flush();
response.getOurStream.close();
}
新聞熱點
疑難解答