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


Total views.

© 2013 - 2018. All rights reserved.

Powered by Hydejack v6.6.1