android默认浏览器response下载PDF文件

  下载出来的文件不是PDF,而是xxx.htm文件,原因是response的header配置有问题。

android默认浏览器的情况下,header的配置应该写成。(java 为例)

response.setHeader("Content-Type", "application/pdf");

response.setHeader("Content-Disposition", "attachment; filename=\"sample.pdf\"");

红字部分为要点。1,如果是PDF的情况下尽量用application/pdf,2文件名用双引号括起来(这一条没办法的时候可以试试,一般不影响,因为文件名一般不直接写进来),

3 文件后缀名小写无效的情况下,把它变成大写再试(一般小写就有效,如果后缀是大写的话,会影响android文件自动识别,在打开文件时需要手动选择打开方式)。

 

扩展下,下载所有符合二进制编码的邮件

 

response.setHeader("Content-Type", "application/octet-stream"); // 这里变成application/octet-stream就好了。
response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(inputfilename, "UTF-8")); // 这里的inputfilename例如test.doc,test.jar,test.pdf,test.html等等。不需要用双引号括起来。
OutputStream out = response.getOutputStream();
File file = new File(logfilepath + inputfilename);
InputStream is = new FileInputStream(file);
DownloadUtil.transfer(is, out);

 

public class DownloadUtil {

public static void transfer(InputStream is, OutputStream os) throws IOException {

int count = 0;
byte[] buffer = new byte[8192];
while ((count = is.read(buffer)) > 0) {
os.write(buffer, 0, count);
}
is.close();
os.close();
}
}

 

posted on 2013-12-02 12:43  扭头撞到墙  阅读(1734)  评论(0编辑  收藏  举报