用Java IO流实现下载文件

用Java IO流实现下载文件  @RequestMapping(value="download")   publicStringdownload(HttpServletResponseresponse,Modelmodel){             //通过文件名找出文件的所在目录      StringURL="D:/one/two.txt";      //得到要下载的文件…

大家好,又见面了,我是你们的朋友全栈君。   @RequestMapping(value = “download”)

    public String download(HttpServletResponse response, Model model) { 

        

        //通过文件名找出文件的所在目录

        String URL = “D:/one/two.txt”;

        //得到要下载的文件

        File file = new File(URL);

        

        //如果文件不存在

        if(!file.exists()){

            //如果文件不存在,进行处理

           int  i=1/0;//系统会报错,除数不能为0.

           // return “modules/cms/front/themes/”+site.getTheme()+”/frontError”;

        }

        

        InputStream inputStream = null;  

        OutputStream outputStream = null;  

      //创建缓冲区

        byte[] b= new byte[1024];  

        int len = 0;  

        try {  

             //读取要下载的文件,保存到文件输入流

             inputStream = new FileInputStream(file);  

             outputStream = response.getOutputStream();  

             response.setContentType(“application/force-download”);  

             String filename = file.getName();  

             //设置响应头,控制浏览器下载该文件

             response.addHeader(“Content-Disposition”,”attachment; filename=” + URLEncoder.encode(filename, “UTF-8”));  

             response.setContentLength( (int) file.length( ) );  

             //循环将输入流中的内容读取到缓冲区当中      

             while((len = inputStream.read(b)) != -1){

                 //输出缓冲区的内容到浏览器,实现文件下载

                  outputStream.write(b, 0, len);  

             }

                

         } catch (Exception e) {  

                e.printStackTrace();  

         }finally{  

                if(inputStream != null){  

                    try {  

                        inputStream.close();  

                        inputStream = null;  

                    } catch (IOException e) {  

                        e.printStackTrace();  

                    }  

                }  

                if(outputStream != null){  

                    try {  

                        outputStream.close();  

                        outputStream = null;  

                    } catch (IOException e) {  

                        e.printStackTrace();  

                    }  

                }  

            }

           

        return null;

    }

在链接中加入该访问地址即可。

   

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138720.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 固态硬盘开盘数据恢复的方法是_硬盘数据恢复原理

    固态硬盘开盘数据恢复的方法是_硬盘数据恢复原理在电脑的使用中有时因为一些不当的操作会导致固态硬盘损坏,有的网友就在现实中遇到了这种情况,咨询小编固态硬盘开盘数据恢复的方法,下面小编就将怎么恢复固态硬盘数据教给大家。更多一键重装系统的方法在这里工具/原料系统版本:win10教育版品牌型号:华为MateBookXPro方法一、固态硬盘开盘数据恢复的方法1、怎么恢复固态硬盘数据呢,首先可以查看回收站,如果被删除的数据还在回收站里点击还原即可。方法二、固态硬盘开盘数据恢复的方法1、下载安装嗨格式数据恢复大师,在首界面选择恢复模式和文件存储位置,点击扫描,

    2022年9月20日
    3
  • Spring Boot第八章-Spring Data JPA

    Spring Boot第八章-Spring Data JPA

    2021年5月16日
    189
  • 免杀思路总结_标准专杀任务法

    免杀思路总结_标准专杀任务法免杀思路总结1.免杀技术简介1.免杀的重要性2.免杀的难度3.杀毒软件的排行国外国内1、Bitdefender1、3602、Norton3602、智量安全(没测过,据说很厉害)3、Kaspersky 3、火绒安全4、Webroot 4、金山独霸5、TrendMicro 5

    2022年8月20日
    14
  • android hybrid框架_android studio 开发

    android hybrid框架_android studio 开发本文将介绍android中hybrid开发相关的知识点。hybrid开发实际上是混合开发的意思,这里的混合是H5开发与Native开发混合的意思。下面的文章中我们将逐个介绍一下hybrid开发的概念、hybrid开发的优势、android中如何实现hybrid开发、简单的hybrid开发的例子,以及在产品实践中对hybrid开发的应用,希望通过本篇文章的介绍让您能够对android中的hybrid开发有一个基本的认识

    2022年9月22日
    3
  • 朴素贝叶斯(Naive Bayes)原理+编程实现拉普拉斯修正的朴素贝叶斯分类器

    朴素贝叶斯(NaiveBayes)原理+编程实现拉普拉斯修正的朴素贝叶斯分类器,以西瓜数据集3.0为训练集,对“测1”样本进行判别。

    2022年4月8日
    111
  • Idea生成Javadoc

    Idea生成Javadoc

    2022年3月12日
    36

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号