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


相关推荐

  • java web 学习成长路线

    java web 学习成长路线

  • DropdownList绑定年份并且默认值显示当年年份

    DropdownList绑定年份并且默认值显示当年年份int year = DateTime.Now.Year;// 取当前时间年                ListItem yearItem = null;//向过去的年份循环100年for (int i = year; i{   yearItem = new ListItem(i.ToString(), i.ToString());   d

  • pycharm 2021.11激活[最新免费获取]

    (pycharm 2021.11激活)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.htmlCE…

  • 感知机分析

    感知机分析关于感知机okletsgo。感知机是线性分类模型,划重点注意哦,是线性的分类模型。也就是说,如果你拿感知机去分类线性不可分的数据集的话,它的效果想必垂泪。因为近期看到相关算法的缘故来写一片感知机的文章,主要介绍一下这是个什么东西以及它能用来干什么。就我来说最考试接触到感知机是在学习神经网络的时候,神经网络中的每一个点就能看做是一个感知机。上图大概就是感知机的构造了。了解神经…

    2022年10月21日
  • robotium android,Robotium 测试Android apk安装包

    robotium android,Robotium 测试Android apk安装包介绍要测试apk程序必须和我们编写的测试程序拥有相同的签名(signature)。如果没有apk程序的签名秘钥,就要去除apk程序的签名,然后再使用自己的key对其签名(这一步中,我们可以使用debugkey),已经有现成的工具可用,下载地址re-sign.jar,这个工具可以去掉apk程序的原签名,然后使用我们自己的debugkey对其签名。详细编写测试用例之前,我们需要知道apk程序的包名…

  • docker 开放 2375端口

    docker 开放 2375端口背景:centos7.8vi/usr/lib/systemd/system/docker.service修改[Service]的ExecStart,增加-Htcp://0.0.0.0:2375[Service]Type=notify#thedefaultisnottousesystemdforcgroupsbecausethedelegateissuesstill#existsandsystemdcurrentlydoesnotsupport

发表回复

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

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