用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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 中小型酒店管理系统[通俗易懂]

    中小型酒店管理系统[通俗易懂][摘要]计算机网络如果结合使用信息管理系统,能够提高管理员管理的效率,改善服务质量。优秀的中小型酒店管理系统能够更有效管理用户预订酒店业务规范,帮助管理者更加有效管理用户预订酒店,可以帮助提高克服人工管理带来的错误等不利因素。所以一个优秀的中小型酒店管理系统能够带来很大的作用。本中小型酒店管理系统使用了计算机语言Java和存放数据的仓库MySQl,采用了MVC设计模式来实现。本系统使用了框架SpringBoot实现了中小型酒店管理系统应有的功能,系统主要角色包括管理员、第三方管理员和酒店管理员。[关键词]

    2022年9月25日
    0
  • 如何暂时退出vim并返回

    如何暂时退出vim并返回我怎么能退出Vim,而不是:q,然后回去继续编辑?

    2022年5月27日
    373
  • Dell服务器IPMI工具远程唤醒开机

    Dell服务器IPMI工具远程唤醒开机DELL服务器不像台式机那样可以在BIOS里面设置自动的开机的时间,这也给客户的远程管理造成困扰,下面的文章可以帮助大家解决这个问题。1. 客户端上需要有ipmish.exe文件2. 启动服务器,使用Ctrl+E进入IPMI Server Management Configuration 3. 设置IPMI Server Management Configuration(1).设置 …

    2022年6月2日
    158
  • Fread函数的用法「建议收藏」

    Fread函数的用法「建议收藏」转载地址 https://www.cnblogs.com/melons/p/5791874.html 函数原型:size_t fread( void *buffer, size_t size, size_t count, FILE *stream )  buffer 是读取的数据存放的内存的指针(可以是数组,也可以是新开辟的空间,buffer就是…

    2022年9月13日
    0
  • PID控制学习–原理(一)

    PID控制学习–原理(一)目录一、PID控制原理与程序流程1、过程控制2、PID调节各个单元的作用二、数字PID控制器1、模拟PID控制规律的离散化2、数字PID控制器的差分方程3、常见的控制方式4、PID算法的两种形式三、PID算法的程序流程1、增量型PID算法的程序流程2、位置型PID控制的程序流程3、程序流程四、标准PID算法的改进1、微分项的改进2、微分线…

    2022年6月2日
    32
  • 客户端timewait

    客户端timewaitSocket中的TIME_WAIT状态在高并发短连接的server端,当server处理完client的请求后立刻closesocket此时会出现time_wait状态然后如果client再并发2000个连接,此时部分连接就连接不上了,用linger强制关闭可以解决此问题,但是linger会导致数据丢失,linger值为0时是强制关闭,无论并发多少多能正常连接上,如果非0会发生部分连接不上…

    2022年6月5日
    37

发表回复

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

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