用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;

    }

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

   

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • AOI之十字链表法

    AOI之十字链表法1.简介AOI主要有九宫格、灯塔和十字链表的算法实现。本文阐述十字链表的实现2. 基本原理若是二维地图,将地图内的对象按照坐标值,从小到大分在x轴和y轴两个链表上。如果是三维地图,则还需要维护多一个z轴的链表3.基本接口 Add:对象进入场景Move:对象在场景内移动Leave:对象离开场景4.代码如下scene.h#ifndef__CScene_H__#define__CScene_…

  • chrome-devtools_chromedev是什么软件

    chrome-devtools_chromedev是什么软件保存js和csssetting>workspace工作区设置后,自动映射工作区带绿色图标的文件,不需要请求blackboxscript黑盒调试,调试不进入第三方代码,只调试项目代码setting>blackbox或者鼠标右键设置networkthrottlingprofile设置网络模式,网速限制,在network中选择模式setting&gt…

  • Java中&和&&,|和||的区别(超详细讲解),细节请必会!

    Java中&和&&,|和||的区别(超详细讲解),细节请必会!一、&是与,&&是短路与&&是左边条件不满足就终止了,不会继续计算右边条件;而&是无论左边是否满足都会继续执行右边。比如a&&b,假如计算a是假,那么就不会继续计算b的真假值了;假如a是真,那么会继续计算b,当b也是真时,a&&b为真。而a&b,无论a是真假,都会继续计算…

  • c语言中system函数怎么用_system函数的返回值

    c语言中system函数怎么用_system函数的返回值C语言中如何使用system函数一.system函数c语言中的system()函数主要用于发出一个DOS命令,该函数已经收录在标准c库中,可以直接调用。使用时包含头文件<stdlib.h>补充:DOS:DOS是DiskOperatingSystem的缩写,即磁盘操作系统。它是一个基于磁盘管理的操作系统。DOS命令:是指DOS操作系统的命令,是一种面向磁盘的操作命令,主要包括目录操作类命令、磁盘操作类命令、文件操作类命令和其它命令。(学习DOS命令是控制微机的基础)提供用户使用的

  • 【树莓派4B学习】十四、树莓派4B串口通信

    【树莓派4B学习】十四、树莓派4B串口通信树莓派的串口默认为SSH调试使用树莓派如何开启串口,这里不再赘述可参考这里一、必须要先知道的储备知识树莓派4B的外设一共包含两个串口,一个称之为硬件串口(/dev/ttyAMA0),一个称之为mini串口(/dev/ttyS0)。硬件串口由硬件实现,有单独的波特率时钟源,性能高、可靠,mini串口性能低,功能也简单,并且没有波特率专用的时钟源而是由CPU内核时钟提供,因此mini串…

  • hdu 2421 Deciphering Password(约数个数问题)

    hdu 2421 Deciphering Password(约数个数问题)

发表回复

您的电子邮箱地址不会被公开。

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