------------------------------下作下载方法二---------------------------------------------------
String msg=null;
  try {
  response.setCharacterEncoding("gb2312");
  response.setContentType("text/html");
  javax.servlet.ServletOutputStream ou = response.getOutputStream();
  //文件名
  String filename=new String(request.getParameter("filename").getBytes("ISO8859_1"),"utf-8").toString();
  //路径
 
  String filepath=ServletActionContext.getServletContext().getRealPath("/upload/"+filename);
  //System.out.println("DownloadFile filepath:" + filepath);
  //System.out.println("DownloadFile filename:" + filename);
  //java.io.File file = new java.io.File(filepath + filename);
  java.io.File file = new java.io.File(filepath);
  if (!file.exists()) {
  System.out.println(file.getAbsolutePath() + " 文件不能存在!");
   msg="抱歉,文件可能过期了!";
   super.addActionError(msg);
   return null;
  }
 
  // 读取文件流
  java.io.FileInputStream fileInputStream = new java.io.FileInputStream(file);
  // 下载文件
  // 设置响应头和下载保存的文件名
  if (filename != null && filename.length() > 0) {
  response.setContentType("application/x-msdownload");//弹出下载的框
  
  response.setContentLength((int) file.length());//下载统计文件大小的进度
  response.setHeader("Content-Disposition", "attachment; filename=" + new String(filename.getBytes("gb2312"),"iso8859-1") + "");
  //response.setHeader("Content-Length", file.length());
  //下载框的信息
  if (fileInputStream != null) {
  int filelen = fileInputStream.available();
  //文件太大时内存不能一次读出,要循环
  
  byte a[] = new byte[filelen];
 
  fileInputStream.read(a);
  
  ou.write(a);
  }
  fileInputStream.close();
  ou.close();
  }
  } catch (Exception e) {
   e.printStackTrace();
   msg="抱歉,文件可能过期了!";
   super.addActionError(msg);
   
  }
  //解决完成后使用一切正常,但是总抛出java.lang.IllegalStateException异常主要是流还存在
  return null;
  
 }

SSH下载的方法2的更多相关文章

  1. SSH下载的方法

    ----------------------------------下作下载方法一----------------------------------------------------------- ...

  2. go依赖包下载加速方法及github加速

    go依赖包下载加速方法及github加速 对于https://github.com/kubernetes/kubernetes整个仓库大小为近900M,下载起来那个伤心: 方法一:使用码云 这是码云上 ...

  3. .NET两种常见上传下载文件方法

    1.FTP模式 代码如下: (1)浏览 /// <summary> /// 浏览文件 /// </summary> /// <param name="tbCon ...

  4. Docker配置国内加速器加速镜像下载的方法

    在搭建hyperledger fabric的开发环境的时候,用docker去下载镜像,好慢好慢,慢到下了一个下午没有下载完成,最后还是失败了.最后去网上找了一下,发现有配置国内加速器加速镜像下载的方法 ...

  5. jenkins下载插件无插件显示+离线下载插件方法

    1.打开Jenkins插件管理,可选插件为空,无法选择自己需要的插件进行下载 打开插件管理的“高级”选项,在升级站点填写 http://mirror.xmission.com/jenkins/upda ...

  6. 前端通过url下载文件方法

    前端通过url下载文件方法 产生背景 浏览器通过url下载文件,当浏览器识别出资深能播放的资源文件,就不会走下载流程,会直接打开 解决方法 1.让后台转成请求的方式,输出文件流(如果想实现批量下载-因 ...

  7. vs2012 MSDN帮助文档离线包下载安装方法

    vs2012安装文件 自带的 MSDN帮助文档不全, 需要自己手动添加需要的离线文档包, 具体方法如下 1. 打开 vs2012 2. 按 ctrl + alt + F1 打开帮助文档管理器 3. 在 ...

  8. 使用PHPword中文乱码并且下载的方法

    如果你的编码格式是utf-8的话就用这个 1.找到 Section.php 的 addText 函数 $givenText = utf8_encode($text); 改成 $givenText = ...

  9. js页面(页面上无服务端控件,且页面不刷新)实现请求一般处理程序下载文件方法

    对于js页面来说,未使用服务端控件,点击下载按钮时不会触发服务端事件,且不会提交数据到服务端页面后台进行数据处理,所以要下载文件比较困难.且使用jQ的post来请求一般处理程序也不能实现文件的下载,根 ...

随机推荐

  1. BZOJ 3306 树

    dfs序建线段树+分类讨论+写的有点长. #include<iostream> #include<cstdio> #include<cstring> #includ ...

  2. Android隐藏虚拟按键,关闭开机动画、开机声音

    /*********************************************************************** * Android隐藏虚拟按键,关闭开机动画.开机声音 ...

  3. linux 命令行字符终端terminal下强制清空回收站

    回收站其实就是一个文件夹,存放被删掉的文件. ubuntu 回收站的路径: $HOME/.local/share/Trash/ 强制清空回收站: rm -fr $HOME/.local/share/T ...

  4. 【转】QT中QWidget、QDialog及QMainWindow的区别

    QWidget类是所有用户界面对象的基类. 窗口部件是用户界面的一个基本单元:它从窗口系统接收鼠标.键盘和其它事件,并且在屏幕上绘制自己.每一个窗口部件都是矩形的,并且它们按Z轴顺序排列.一个窗口部件 ...

  5. 【解题报告】zju-1145 Dreisam Equations

    原题地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=145 题目大意:在给定的等式右边数字之间加上加.减.乘运算符,使等式成 ...

  6. T-SQL备忘(4):分页

    set statistics io on set statistics time on --SQL Server 2012分页方式 select * from Production.Product o ...

  7. HDU 4608 I-number 2013 Multi-University Training Contest 1

    定义一个数 y 为 x 的 I-number.对于 y 有如下要求: 1.y > x; 2.y 的每一位之和要为10的倍数(例如 28 每一位之和为 10 ,为 10 的 1 倍); 3.这样的 ...

  8. Java自动装箱拆箱

    一.装箱.拆箱定义 如果一个int型量被传递到需要一个Integer对象的地方,那么,编译器将在幕后插入一个对Integer构造方法的调用,这就叫做自动装箱.而如果一个Integer对象被放到需要in ...

  9. Velocity+Java较全教程

    一.安装myEclipse 二.安装velocity的eclipse插件: http://www.oschina.net/p/veloeclipse(介绍) 方法1(现在基本上非常慢)http://p ...

  10. PHP Framework安装

    Framework 1> 初始化 前提:服务器上已经装有 Apache/Nginx 和 MySQL 进入 hush-framework/hush-app/bin 目录(Linux 下需执行 ch ...