web下载,弹出框,乱码等问题
对于一个下载链接,要想浏览器弹出保存对话框而不是直接打开文件,需要再返回头中设置Content-disposition说明。
以java servlet代码为例:
resp.setContentType( "application/octet-stream;"); resp.setHeader( "Content-disposition","attachment;filename="+ URLEncoder.encode(f.getName(),"utf-8"));
这两句让浏览器认识到附件是一个二进制流,只管下载。即使是txt文件也是如此。
因此对于一个a tag将其href指向这样的下载链接的话,浏览器会弹出保存对话框,页面也不会跳到空白页。也就是不需要指定target=”_blank”的。
对于乱码问题,需要设置文件名的编码。但是对于有空格和中文的文件名来说,弹出框显示的文件名各浏览器并不相同:
FF:完全是utf-8编码后的形式,看不出原文件名。
IE:中文可显示,但是空格还是以+号显示。
chrome:同IE。
参见:
Content-disposition说明以及中文乱码http://hi.baidu.com/_javaf/blog/item/93ae0710715e9d1ab9127b94.html