Java:原生javaWeb下载pdf文件

摘要:
=-1){os.write(b,0,i);}os.flush();}catch(IOExceptionignored){}finally{try{if(os!=null){os.close();}}catch(IOExceptione){e.printStackTrace();}}}

鉴于网上许多下载pdf的代码下载的pdf都是无效pdf,我稍加修改:

    @RequestMapping("/downPdf")
    public void downPdf(HttpServletResponse response, HttpServletRequest request){
        String pdfPath = "C:\Users\17921\Desktop\spring-boot-reference.pdf";
        File file = new File(pdfPath);
        String pdfName = FilenameUtils.getName(pdfPath);
        OutputStream os = null;
        try{
            FileInputStream in = new FileInputStream(file);
            BufferedInputStream bf = new BufferedInputStream(in);
            os = response.getOutputStream();
            response.setContentType(MediaType.APPLICATION_PDF_VALUE);
            response.setHeader("content-Disposition","attachment;filename="+pdfName);
            byte[] b = new byte[bf.available() + 1000];
            int i;
            while((i=bf.read(b))!=-1){
                os.write(b,0,i);
            }
            os.flush();
        }catch(IOException ignored){

        }finally {
            try {
                if (os != null) {
                    os.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

免责声明:文章转载自《Java:原生javaWeb下载pdf文件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MongoDB索引(7)文件上传报错java.io.FileNotFoundException拒绝访问下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C++实现ftp客户端

#ifndef CLIENT_H_ #define CLIENT_H_ #include <sys/socket.h> #include <unistd.h> #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include &...

WebSocket原理及与http1.0/1.1 long poll跟 ajax轮询的区别【转自知乎】

今天学习了几个以前没有见过的东东,作者的文章写的还是很通熟易懂的!! 起码我基本都看懂了(2333)————正文 今天要学习的是WebSocket原理与http1.0/1.1 long poll 和 ajax轮询的区别 WebSocket是HTML5出的东西,也就是说HTTP谢意没有变化,或者说没有关系。首先HTTP有1.1和1.0直说,也就是所谓的kee...

Hypertext Transfer Protocol HTTP/1.1 Status Code(HTTP 响应状态代码)

摘自CSDN http://blog.csdn.net/hpf911/article/details/7279206 Status Code Definitions(状态码定义) Informational 1xx  (1xx 提示信息) Continue (100 继续,表示客户端应该继续发起请求) Switching Protocols(101 协...

Scrapy进阶知识点总结(二)——选择器Selectors

1. Selectors选择器 在抓取网页时,您需要执行的最常见任务是从HTML源提取数据。有几个库可用于实现此目的,例如: BeautifulSoup是Python程序员中非常流行的Web抓取库,它基于HTML代码的结构构造Python对象,并且相当好地处理坏标记,但它有一个缺点:它很慢。 lxml是一个XML解析库(也可以解析HTML),它使用基于E...

asp.net2.0导出pdf文件完美解决方案[转载]

PDF简介:PDF(Portable Document Format)文件格式是Adobe公司开发的电子文件格式。这种文件格式与操作系统平台无关,也就是说,PDF文件不管是在Windows,Unix还是在苹果公司的Mac OS操作系统中都是通用的。这一特点使它成为在Internet上进行电子文档发行和数字化信息传播的理想文档格式。越来越多的电子图书、产品说...

vue移动端预览pdf

vue-pdf移动端缺点: 1、安卓预览红头文件会出现缺字少字的问题,ios正常 2、预览过大文件,分页形式的好用,不分页的文件过大可能打不开 3、分页形式放大缩小只能通过按钮改变css放大,不分页无法放大 解决vue-pdf移动端问题使用pdfh5预览pfd: 1.安装 npm install pdfh5 2.使用 <template>...