public static void downLoadFile(InputStream inStream, String fileName)
{
if (StringUtils.isBlank(fileName)) {
fileName = UUID.randomUUID().toString().replaceAll("-", "");
}
HttpServletRequest req = getRequest();
String agent = req.getHeader("User-Agent");
boolean isMSIE = (agent != null) && (agent.indexOf("MSIE") != -1);
try
{
if (isMSIE) {
fileName = URLEncoder.encode(fileName, "UTF-8");
fileName = fileName.replace("+", "%20");
} else {
fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
HttpServletResponse response = getResponse();
response.setCharacterEncoding("UTF-8");
response.setHeader("content-disposition", "attachment;filename=\"" + fileName + "\"");
response.setContentType("application/octet-stream");
OutputStream outStream = null;
try {
outStream = response.getOutputStream();
byte[] cache = new byte[1024];
int length = inStream.read(cache);
while (length != -1) {
outStream.write(cache, 0, length);
length = inStream.read(cache);
}
} catch (IOException e) {
e.printStackTrace();
try
{
outStream.flush();
} catch (IOException e) {
e.printStackTrace();
}
try {
outStream.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
inStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
finally
{
try
{
outStream.flush();
} catch (IOException e) {
e.printStackTrace();
}
try {
outStream.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
inStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static HttpServletRequest getRequest()
{
ActionContext ac = ActionContext.getContext();
HttpServletRequest req = null;
if (ac != null) {
req = (HttpServletRequest)ac.get("com.opensymphony.xwork2.dispatcher.HttpServletRequest");
} return req;
}
public static HttpServletResponse getResponse()
{
ActionContext ac = ActionContext.getContext();
HttpServletResponse response = (HttpServletResponse)ac.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse");
return response;
}

下载文件downloadFile的更多相关文章

  1. TFS二次开发05——下载文件(DownloadFile)

    前面介绍了怎样读取TFS上目录和文件的信息,怎么建立服务器和本地的映射(Mapping). 本节介绍怎样把TFS服务器上的文件下载到本地. 下载文件可以有两种方式: using Microsoft.T ...

  2. WebClient.DownloadFile(线程机制,异步下载文件)

    线程机制(避免卡屏),异步下载文件. 我做网站的监控,WebClient.DownloadFile这个方法是我经常用到的,必要的时候肯定是要从网上下载些什么(WebRequest 也可以下载网络文件, ...

  3. 通过JSch编写上传、下载文件

    package com.hct.util; /** * @作者: HCT * @时间:2016年12月29日下午3:13:20 * @描述: * */ import java.io.*; import ...

  4. Javaweb学习笔记——上传下载文件

    一.前言 在Javaweb中,上传下载是经常用到的功能,对于文件上传,浏览器在上传的过程中是以流的过程将文件传给服务器,一般都是使用commons-fileupload这个包实现上传功能,因为comm ...

  5. (转)FTP操作类,从FTP下载文件

    using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Net ...

  6. .net 直接输出远程文件到浏览器和下载文件保存到本机

    利用了xmlhttp,实现代码比较简单具体实现如下: 首先bin文件引入,com->microsoft xml v3.0 具体代码如下: protected void Button1_Click ...

  7. C#异步批量下载文件

    C#异步批量下载文件 实现原理:采用WebClient进行批量下载任务,简单的模拟迅雷下载效果! 废话不多说,先看掩饰效果: 具体实现步骤如下: 1.新建项目:WinBatchDownload 2.先 ...

  8. C# 指定物理目录下载文件,Response.End导致“正在中止线程”异常的问题

    FileHandler http://www.cnblogs.com/vipsoft/p/3627709.html UpdatePanel无法导出下载文件: http://www.cnblogs.co ...

  9. extjs插件开发上传下载文件简单案例

    前台,extjs,框架,mybatis,spring,springMVC,简单的文件上传下载案例. 必要的jar包,commons-fileupload-1.3.1.jar,commons-io-2. ...

随机推荐

  1. VBA Excel WideCharToMultiByte Compile error on 64-bit System

    Compile Error: The code in this project must be updated for use on64-bit systems. Please review and ...

  2. phpstorm 2017.3.3的安装和破解

    首先先下载phpstorm安装包,可以直接百度phpstorm就有了,或者打开这个链接:https://www.jetbrains.com/zh/phpstorm/specials/phpstorm/ ...

  3. StringBuilder的实现与技巧(转)

    1.Length   0.说明 在上一篇进一步了解String 中,发现了string的不便之处,而string的替代解决方案就是StringBuilder的使用 它的使用也很简单 System.Te ...

  4. 【视频编解码·学习笔记】11. 提取SPS信息程序

    一.准备工作: 回到之前SimpleH264Analyzer程序,找到SPS信息,并对其做解析 调整项目目录结构: 修改Global.h文件中代码,添加新数据类型UINT16,之前编写的工程中,UIN ...

  5. python访问mysql和redis

    1. 修改mysql配置文件 修改bind-address=0.0.0.0(允许通过远程网络连接) 2. 修改redis配置文件 修改bind-address=0.0.0.0(允许通过远程网络连接), ...

  6. 浅析Java 8新特性Lambda Expression

    什么是Lambda Expression 对于Lambda Expression,我的理解是,它是一个函数表达式,如下: (int x, int y) -> x - y 符号左边定义了函数的输入 ...

  7. CodeFirst学习笔记

    一.概要 本文主要是学习CodeFirst思想.技术上的实现是C#(.net framework4.6.1) 控制台 + PostgreSQL 10.2.1 代码:https://pan.baidu. ...

  8. sql server 2008 sql prompt 自动提示

    sql server 2008 在编写SQL脚本的时候,总是希望能提示一些信息,或者自动提示需要查询的表的名字,或者表的基本信息,sql server默认会有一些提示的,如果没有可以设置工具--> ...

  9. 30.Django CSRF 中间件

    CSRF 1.概述 CSRF(Cross Site Request Forgery)跨站点伪造请求,举例来讲,某个恶意的网站上有一个指向你的网站的链接,如果某个用户已经登录到你的网站上了,那么当这个用 ...

  10. 深入java虚拟机学习 -- 类的加载机制(四)

    类加载的命名空间 每个类加载器都有自己的命名空间,命名空间由所有以此加载器为初始类加载器的类组成,不同命名空间的两个类是不可见的,但只要得到类所对应的Class对象的refrence(反射),还是可以 ...