package com.cloud.mina.util;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.OutputStream;

import java.io.UnsupportedEncodingException;

import javax.servlet.http.HttpServletResponse;

/***

 * 下载文件工具类

 */

public class DownLoadUtil {

    private static final String CONTENT_TYPE = "application/x-msdownload";

    /**

     * 下载文件

     * @param response HttpServletResponse

     * @param title 下载时候的文件名称

     * @param file 要下载的文件对象

     * @return true 下载成功    false 下载失败

     */

    public static boolean downLoadFile(HttpServletResponse response,String filename,File file){

        boolean result = true;

        FileInputStream input = null;

        OutputStream out = null;

        try {

            //设置response的编码方式

            response.setContentType(CONTENT_TYPE);

            //写明要下载的文件的大小

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

            //设置附加文件名

            response.setHeader("Content-Disposition","attachment;filename=\""+new String

                    (filename.getBytes("UTF-8"),"iso-8859-1")+"\"");

            //读出文件到i/o流

            input =new FileInputStream(file);

            //从response对象中得到输出流,准备下载

            out = response.getOutputStream();

            if(input!=null && out!=null){    // 判断输入或输出是否准备好

                int temp = 0 ;    

                try{

                    while((temp=input.read())!=-1){    // 开始拷贝

                        out.write(temp) ;    // 边读边写

                    }

                }catch(IOException e){

                    e.printStackTrace() ;

                    result = false;

                }

            }

        } catch (UnsupportedEncodingException e) {

            e.printStackTrace();

            result = false;

        } catch (IOException e) {

            result = false;

            e.printStackTrace();

        } finally{

            if(input!=null){

                try {

                    input.close();

                } catch (IOException e) {

                    e.printStackTrace();

                    result = false; 

                }

            }

            if(out!=null){

                try {

                    out.flush();

                    out.close();//关闭输出流

                } catch (IOException e) {

                    e.printStackTrace();

                    result = false; 

                }

            }

            

        }

        return result;

    }

}

原文地址;https://blog.csdn.net/qxqxqzzz/article/details/97008529

文件下载工具类 DownLoadUtil 实战的更多相关文章

  1. Java 文件下载工具类

    Java 文件下载工具类 import org.slf4j.Logger; import org.slf4j.LoggerFactory; private static Logger logger = ...

  2. C# 文件下载工具类FileDownHelper

    using System; using System.IO; using System.Threading; using System.Web; namespace 落地页测试代码 { public ...

  3. JavaWeb响应下载(包含工具类)

    纸上得来终觉浅,绝知此事要躬行!今天博主分享是关于javaweb的响应(response)下载 以下是我的Demo: 页面我就粘主要部分的代码 <a href = "${pageCon ...

  4. (转载)项目实战工具类(一):PhoneUtil(手机信息相关)

    项目实战工具类(一):PhoneUtil(手机信息相关)   可以使用的功能: 1.获取手机系统版本号 2.获取手机型号 3.获取手机宽度 4.获取手机高度 5.获取手机imei串号 ,GSM手机的 ...

  5. 小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_40、Redis工具类封装讲解和实战

    笔记 4.Redis工具类封装讲解和实战     简介:高效开发方式 Redis工具类封装讲解和实战         1.常用客户端 https://redisdesktop.com/download ...

  6. 分享一个FileUtil工具类,基本满足web开发中的文件上传,单个文件下载,多个文件下载的需求

    获取该FileUtil工具类具体演示,公众号内回复fileutil20200501即可. package com.example.demo.util; import javax.servlet.htt ...

  7. 项目实战工具类(一):PhoneUtil(手机信息相关)

    可以使用的功能: 1.获取手机系统版本号 2.获取手机型号 3.获取手机宽度 4.获取手机高度 5.获取手机imei串号 ,GSM手机的 IMEI 和 CDMA手机的 MEID. 6.获取手机sim卡 ...

  8. java的Arrays工具类实战

    java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的.静态方法是属于类的,不是属于类的对象.所以可以直接使用类名加方法名进行调用.Arrays作为一个工具类,能很好的操作数组 ...

  9. 《java并发编程实战》读书笔记4--基础构建模块,java中的同步容器类&并发容器类&同步工具类,消费者模式

    上一章说道委托是创建线程安全类的一个最有效策略,只需让现有的线程安全的类管理所有的状态即可.那么这章便说的是怎么利用java平台类库的并发基础构建模块呢? 5.1 同步容器类 包括Vector和Has ...

随机推荐

  1. mvvmlight下passwordBox绑定的解决方法

    在做公司的项目中,用到MVVMLight框架,需要做登陆注册的功能模块,但是在wpf中passwordBox没有内置绑定功能,因为出于安全的考虑.但是,博主又非常想要契合mvvm思想,一定要passw ...

  2. Luogu P4932 浏览器(二进制)

    P4932 浏览器 题意 题目背景 __stdcall在用\(Edge\)玩\(slay\)的时候,鼠标会经常失灵,这让她十分痛苦,因此她决定也要让你们感受一下\(Edge\)制造的痛苦. 题目描述 ...

  3. 2、设备树的规范(dts和dtb格式)

    第01节_DTS格式(1) 语法:Devicetree node格式:[label:] node-name[@unit-address] { [properties definitions]      ...

  4. P1080(python 高精度)

    https://www.luogu.org/problem/P1080 n=int(input()) s=input().split() S=int(s[0]) T=int(s[1]) a=[] fo ...

  5. DataLakeAnalytics: 解析IP地址对应的国家城市地址的能力

    Data Lake Analytics 作为云上数据处理的枢纽,最近加入了通过IP地址查找对应的国家.省份.城市.ISP的函数, 今天带大家体验一下. 函数详细介绍 本次一共添加了下面这些函数: ip ...

  6. ROS urdf和xacro文件详解

    视觉标签:visual <visual> <origin xyz="0.0 0.0 0.0" /> <geometry> <box siz ...

  7. python 3.6 关于python的介绍

    python的官方网站 https://www.python.org/ python 3.6 的官方网站的下载地址 https://www.python.org/downloads/release/p ...

  8. JS防抖动

    这道题目经常与事件触发器同时存在,为了考察面试者在一些具体业务流程上(信息流,搜索框输入查询)等,能否综合的考虑实现思路. 题目:在某些信息列表中一般采用瀑布流,滚动一屏时加载相应的数据,请思考如何避 ...

  9. CentOS 6.5 使用Apache的VirtualHost映射SVN端口

    vi /etc/httpd/conf.d/subversion #修改Apache的SVN配置,如果没有配置过则略过 #<Location /svn> # DAV svn # SVNPar ...

  10. python-web-下载所有xkcd漫画

    下载所有xkcd漫画 # downloads every single xkcd comic import requests,os,bs4 url='http://xkcd.com' # start ...