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. ubuntu安装pycharm桌面快捷方式

    1.sudo gedit /usr/share/applications/Pycharm.desktop 2.输入 [Desktop Entry] Encoding=UTF-8 Name=Pychar ...

  2. 【CJOJ2440】大话西游(树链剖分)

    题面 Description "大话西游" 是一个在中国非常流行的在线游戏, 由 NIE 公司开发和维护. 这个游戏来源于著名的小说<西游记> 和周星弛的电影, 游戏的 ...

  3. 【HDU1711】Number Sequence

    题面 大致题意: 给定两个数列A,B,长度分别为N和M 求出 满足 Ak=B1 ,Ak+1=B2......Ak+M-1=Bm 的最小k值 如果有多个k值输出最小的一个 题解 KMP裸题 直接计算B数 ...

  4. Vue-开发工具的安装

    1. github官网下载vue工具:https://github.com/vuejs/vue-devtools.并解压 2.  在有package.json的文件夹下,按住shift右键,选择&qu ...

  5. Java注解学习

    一.注解定义 JVM5.0定义了4个标准的元注解: @Target, @Retention, @Documented @Inherited 1. @Target 作用:用于描述注解的使用范围 取值El ...

  6. Redis之PHP操作

    一.Redis连接与认证 //连接参数:ip.端口.连接超时时间,连接成功返回true,否则返回false $ret = $redis->connect('127.0.0.1', 6379, 3 ...

  7. JavaScript的作用域

    JavaScript的作用域主要是指函数的作用域,在进行结果判断的时候十分重要,如果不清楚作用域,便很有可能导致拿不到预期的结果,也就无法顺利的进行程序的编写,在经历了一系列的学习和了解之后,对相关知 ...

  8. 视频直播技术(七):Ijkplayer切换网络时停止播放的问题处理

    问题起因: 在进行ijkplayer播放器的测试时,发现ijkplayer播放器在切换网络时出现直播画面停止的问题. 问题分析: 抓取日志发现:tv.danmaku.ijk.media.player. ...

  9. Linux性能分析工具与图形化方法

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~. 作者:赵坤|腾讯魔王工作室后台开发工程师 在项目开发中,经常会遇到程序启动时间过长.CPU使用率过高等问题,这个时候需要依靠性能分析工具来 ...

  10. c运行时函数参考学习地址

    https://docs.microsoft.com/zh-cn/cpp/c-runtime-library/c-run-time-library-reference http://pubs.open ...