經過測試 firefox、QQ、IE 瀏覽器是可以的 chrome瀏覽器不行(直接下載了)
1. 系統框架springmvc+jsp
2. 后台servlet代碼
@RequestMapping("download")
public void download(HttpServletRequest request,HttpServletResponse response){
BufferedInputStream dis = null;
BufferedOutputStream fos = null;
String urlString = request.getParameter("urlString");
String fileName = urlString.substring(urlString.lastIndexOf('/') + 1);
try {
URL url = new URL(urlString);
//response.setContentType("application/x-msdownload;");
response.setContentType("application/octet-stream");
response.setHeader("Content-disposition", "attachment; filename=" + new String(fileName.getBytes("utf-8"), "ISO8859-1"));
response.setHeader("Content-Length", String.valueOf(url.openConnection().getContentLength()));
dis = new BufferedInputStream(url.openStream());
fos = new BufferedOutputStream(response.getOutputStream());
byte[] buff = new byte[2048];
int bytesRead;
while (-1 != (bytesRead = dis.read(buff, 0, buff.length))) {
fos.write(buff, 0, bytesRead);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (dis != null)
try{
dis.close();
}catch (Exception e){
e.printStackTrace();
}
if (fos != null)
try{
fos.close();
}catch (Exception e){
e.printStackTrace();
}
}
}
3. 頁面jsp代碼
<input type="button" onclick="downloadImage()" value="下載"> <script> function downloadImage(){ var urlString = "http://pic32.nipic.com/20130829/12906030_124355855000_2.png"; //跳轉到后端控制器 location.href="${ctx}/guest/download.do?urlString="+urlString; } </script>
4. 下載效果1(firefox)

下載效果2(QQ)

