zoukankan      html  css  js  c++  java
  • 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();
    }
    }

  • 相关阅读:
    AT24C0X I2C通信原理
    Windows文件夹、文件源代码对比工具--WinMerge
    SignalTap导致PCIe Read/Write卡死
    Windows CMD 支持ls命令
    何为内存模型(JMM)?
    何为内存重排序?
    何为安全发布,又何为安全初始化?
    Hibernate入门之many to many关系映射详解
    Hibernate入门之one to many关系映射详解
    Hibernate入门之one to one关系映射详解
  • 原文地址:https://www.cnblogs.com/niutouzdq/p/3453722.html
Copyright © 2011-2022 走看看