------------------------------下作下载方法二---------------------------------------------------
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. jquery ajax GET POST 跨域请求实现

    同一段逻辑代码需要在多个网站中使用, 每个网站都新建一个ashx真是扯蛋的作法,  所以想只请求一处的ashx, 这样便于维护和修改, 那么,ajax跨域问题就来了. 废话少说, 直接上代码,  我现 ...

  2. spring security的标签库

    应用标签库:<%@ taglib prefix='security ' uri='http://www.springframework.org/security /tags' %> < ...

  3. python练习程序(c100经典例19)

    题目: 一个数如果恰好等于它的因子之和,这个数就称为“完数”.例如6=1+2+3.编程找出1000以内的所有完数. def foo(a): sra=a; lis=[1]; while 1: for i ...

  4. linux VFS 内核数据结构

    <strong>简单归纳:fd只是一个整数,在open时产生.起到一个索引的作用,进程通过PCB中的文件描述符表找到该fd所指向的文件指针filp.</strong> 文件描述 ...

  5. 【转】session setup failed: NT_STATUS_LOGON_FAILURE -- 不错

    原文网址:http://blog.sina.com.cn/s/blog_5cdb72780100l26f.html samba服务器出现“session setup failed: NT_STATUS ...

  6. gcc/交叉编译

    一.gcc编译的情况: 1.linux gcc包含的c/c++编译器,gcc和cc是一样的,c++和g++是一样的,一般c程序就用gcc编译,c++程序就用g++编译. 2.linux gcc的应用: ...

  7. Hanoi塔问题

    说明:河内之塔(Towers of Hanoi)是法国人M.Claus(Lucas)于1883年从泰国带至法国的,河内为越战时北越的首都,即现在的胡志明市:1883年法国数学家 Edouard Luc ...

  8. 细雨学习笔记:JMeter 的主要测试组件总结

    1. 测试计划是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器. 2. 线程组代表一定数量的并发用户,它可以用来模拟并发用户发送请求.实际的请求内容在Sampler中定义, ...

  9. 用正则表达式在注册页面(js/aspx.cs)的验证

    1.验证邮箱(用户名) JS页面中: 首先定义变量和正则 var usermail = $("#usermail" ).val(); var username= /^([a-zA- ...

  10. eclipse 恢复被删除的文件

    即使你在项目中删除了某一文件,该文件的相关信息仍会保存在本地历史记录中.这就使得你可以恢复那些在项目或文件夹中已被删除的文件.如果恢复某一被删除的文件,则首先在Navigator视图中选择该文件先前所 ...