------------------------------下作下载方法二---------------------------------------------------
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. activiti 源码笔记之startProcess

    rumtimeService.startProcessInstanceByXX方法将启动流程的任务委派给StartProcessInstanceCmd,此时会根据rumtimeService.star ...

  2. 【C#学习笔记】数组使用

    using System; namespace ConsoleApplication { class Program { static void Main(string[] args) { //int ...

  3. ecshop 无限分类解析(转)

    对ecshop无限级分类的解析,认真分析后发现真的其算法还是比较精典的其实并不难理解,有举例方便大家理解 function cat_options($spec_cat_id, $arr) { stat ...

  4. swun 1766 我的悲剧不可能那么好数

    解题思路: 一向提交特别慎重的我,这题竟然PE了5发左右,放了几天,再回来写,直接1A, 相当的自豪,而且是最优解题者.这题千万要注意,化繁为简,文章只包括大小   写字母和数字,还有空行. #inc ...

  5. DataTable添加列和行的三种方法

    JRoger 原文 #region 方法一: DataTable tblDatas =new DataTable("Datas"); DataColumn dc =null; dc ...

  6. Drupal处理缓存的方式

    Drupal的后台数据库中有很多以cache开头的表,这些都是Drupal的缓存数据表. Drupal的缓存机制使用了接口方式,所有的缓存对象都必须实现DrupalCacheInterface接口: ...

  7. LoadRunner error -27728

    错误现象1:Action.c(16): Error -27728: Step download timeout (120 seconds) has expired whendownloading no ...

  8. Java之--Java语言基础组成—函数

    Java语言基础组成-函数 Java语言由8个模块构成,分别为:关键字.标识符(包名.类名.接口名.常量名.变量名等).注释.常量和变量.运算符.语句.函数.数组. 本片主要介绍Java中的函数,函数 ...

  9. Android各个版本代号及其特性

    - Android1.1 2008 年9月发布的Android第一版 - Android1.5 Cupcake (纸杯蛋糕) 2009年4月30日,官方1.5版本(Cupcake 纸杯蛋糕)的Andr ...

  10. python与saltstack动态传参变量名的研究

    python动态变量名 import sys createVar = locals() listTemp = range(1,10) for i in range(1, len(sys.argv)): ...