在Servlet中的doGet()方法中
獲取FileInputStream對象,new出來,構造參數:String的文件路徑
得到文件路徑,調用this.getServletContext().getRealPath(“這裡是應用根路徑”)
調用HttpServletResponse對象的getOutputStream()方法,得到OutputStream對象
正常讀取和寫入流
輸入流可以關閉,輸出流不要關閉
此時圖片會直接顯示出來,並沒有出現下載
使用http協議頭Content-Disposition:attachment;filename=1.jpg
調用HttpServletResponse對象的setHeader()方法,參數:key,value
此時問題,http協議頭裡不允許有中文,會出錯,編碼是iso8859-1
使用url編碼方式解決,二進制轉十六進制加上個%
調用UrlEncoder.encode()方法,進行url編碼,參數:String文本,編碼”utf-8”
response.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode("測試.jpg", "utf-8")); FileInputStream file=new FileInputStream(this.getServletContext().getRealPath("1.jpg")); OutputStream os=response.getOutputStream(); byte[] b=new byte[1024]; int len=0; while((len=file.read(b))!=-1){ os.write(b,0,len); } file.close();