------------------------------下作下载方法二---------------------------------------------------
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. 07_js走路小游戏

    <html> <head> <!-- 不做了,思路: 按enter键停止,将xs,ys替换为0,再次按,判断xs和ys是否为0,是的话,讲根据fx给xsys赋值. 实现鼠 ...

  2. HDU 5339 Untitled (暴力枚举)

    题意:给定一个序列,要求从这个序列中挑出k个数字,使得n%a1%a2%a3....=0(顺序随你意).求k的最小值. 思路:排个序,从大的数开始模起,这是因为小的模完还能模大的么? 每个元素可以选,也 ...

  3. Using newInstance() to Instantiate a Fragment(转)

    I recently came across an interesting question on StackOverflow regarding Fragment instantiation: Wh ...

  4. Android之判断某个服务是否正在运行的方法

    /** * 判断某个服务是否正在运行的方法 * * @param mContext * @param serviceName * 是包名+服务的类名(例如:net.loonggg.testbackst ...

  5. foreach的指针问题

    从代码: $arr = array(,,,,); echo '$arr = array(1,2,3,4,5)','<br>'; foreach($arr as $key => &am ...

  6. HDU 小明A+B 2096

    解题思路:So easy,练手速的,这种题很快1A,但是没有任何成就感.   转念一想,反正水题也就那几题,所以很快就会刷完. #include<cstdio> int main() { ...

  7. poj 3254(状态压缩基础题)

    题意:就是你给一个n行m列的矩阵,矩阵里的元素由0和1组成,1代表肥沃的土地可以种植作物,0则不可以种植作物,并且相邻的土地不能同时种植作物,问你有多少种种植方案. 分析:这是我做的第一道状态压缩dp ...

  8. 设置TextView控件的背景透明度和字体透明度

    TextView tv = (TextView) findViewById(R.id.xx); 第1种:tv.setBackgroundColor(Color.argb(255, 0, 255, 0) ...

  9. Linux基本命令(8)网络操作的命令

    网络操作命令 命令 功能 命令 功能 ftp 传送文件 telnet 远端登陆 bye 结束连线并结束程序 rlogin 远端登入 ping 检测主机 netstat 显示网络状态 8.1 ftp命令 ...

  10. windows下mysql5.7安装及配置

    装完msi后,复制my-default.ini文件,黏贴为my.ini文件,内容修改如下: # For advice on how to change settings please see# htt ...