1、下载单个文件

public JsonView downPrintFile(){//要下载的文件名 从前台传来String fileNameNeedDown = request.getParameter("fileName");//这里的路径是要下载的文件所在路径String realPath = request.getServletContext().getRealPath("/")+"printController\\";//要下载的文件路径+文件名String aFilePath = realPath + fileNameNeedDown;File file = null;file = new File(aFilePath);BufferedInputStream bis = null;BufferedOutputStream bos = null;try {String aFileName = null;request.setCharacterEncoding("UTF-8");String agent = request.getHeader("User-Agent").toUpperCase();if ((agent.indexOf("MSIE") > 0)|| ((agent.indexOf("RV") != -1) && (agent.indexOf("FIREFOX") == -1)))aFileName = URLEncoder.encode(fileNameNeedDown, "UTF-8");else {aFileName = new String(fileNameNeedDown.getBytes("UTF-8"), "ISO8859-1");}response.setContentType("application/octet-stream");//octet-stream为要下载文件是exe类型或看该文档http://www.w3school.com.cn/media/media_mimeref.aspresponse.setHeader("Content-disposition", "attachment; filename="+ aFileName);response.setHeader("Content-Length", String.valueOf(file.length()));bis = new BufferedInputStream(new FileInputStream(new File(aFilePath)));bos = new BufferedOutputStream(response.getOutputStream());byte[] buff = new byte[2048];int bytesRead;while (-1 != (bytesRead = bis.read(buff, 0, buff.length)))bos.write(buff, 0, bytesRead);System.out.println("success");bos.flush();} catch (Exception e) {System.out.println("失败!");} finally {try {if (bis != null) {bis.close();}if (bos != null) {bos.close();}
//              file.delete();} catch (Exception e) {}}return new JsonView();}

2、下载多个文件,原理是依次下载每个文件,下载完一个加入压缩包,再将压缩包下载下来。最终下载下来的文件是个压缩包。

//下载打印的exe文件至本地public void downPrintLodopFile() throws Exception{
//      String property = System.getProperty("os.arch");//amd64//获得exe文件路径String realPath = request.getServletContext().getRealPath("/")+File.separator+"printFiles\\";String setup_fileName = "Setup.exe";String install32_fileName = "install32.exe";String install64_fileName = "install64.exe";//执行downdown(realPath, new String[]{realPath+setup_fileName , realPath+install32_fileName , realPath+install64_fileName }, request, response);}
public void down(String path, String[] files, HttpServletRequest request, HttpServletResponse response) throws Exception {// path 压缩文件初始设置 String base_name = "printFiles";String fileZip = base_name + ".zip"; // 拼接zip文件,之后下载下来的压缩文件的名字String filePath = path + fileZip;// 之后用来生成zip文件// 创建临时压缩文件try {BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath));ZipOutputStream zos = new ZipOutputStream(bos);ZipEntry ze = null;for (int i = 0; i < files.length; i++) {// 将所有需要下载的文件都写入临时zip文件BufferedInputStream bis = new BufferedInputStream(new FileInputStream(files[i]));ze = new ZipEntry(files[i].substring(files[i].lastIndexOf("\\")));zos.putNextEntry(ze);int s = -1;while ((s = bis.read()) != -1) {zos.write(s);}bis.close();}zos.flush();zos.close();} catch (IOException e) {e.printStackTrace();}// 以上,临时压缩文件创建完成// 进行浏览器下载// 获得浏览器代理信息String agent = request.getHeader("User-Agent").toUpperCase();// 判断浏览器代理并分别设置响应给浏览器的编码格式String finalFileName = null;if ((agent.indexOf("MSIE") > 0)|| ((agent.indexOf("RV") != -1) && (agent.indexOf("FIREFOX") == -1)))finalFileName = URLEncoder.encode(fileZip, "UTF-8");else {finalFileName = new String(fileZip.getBytes("UTF-8"), "ISO8859-1");}response.setContentType("application/x-download");// 告知浏览器下载文件,而不是直接打开,浏览器默认为打开response.setHeader("Content-Disposition", "attachment;filename=\""+ finalFileName + "\"");// 下载文件的名称//输出到本地ServletOutputStream servletOutputStream = response.getOutputStream();DataOutputStream temps = new DataOutputStream(servletOutputStream);DataInputStream in = new DataInputStream(new FileInputStream(filePath));// 浏览器下载临时文件的路径byte[] b = new byte[2048];File reportZip = new File(filePath);// 之后用来删除临时压缩文件try {while ((in.read(b)) != -1) {temps.write(b);}temps.flush();} catch (Exception e) {e.printStackTrace();} finally {if (temps != null)temps.close();if (in != null)in.close();if (reportZip != null)reportZip.delete();// 删除服务器本地产生的临时压缩文件servletOutputStream.close();}}

这是参考网上大家的代码,最后项目写完自己写个记录,参考链接也找不到了,如有侵权请联系本人。

java实现通过浏览器方式下载文件及多个文件相关推荐

  1. java导出excel 浏览器直接下载或者或以文件形式导出

    1 /**2 * excel表格直接下载3 */4 public static void exportExcelByDownload(HSSFWorkbook wb,HttpServletRespon ...

  2. oss pdf浏览器直接下载_如何使 pdf 文件在浏览器里面直接下载而不是打开

    前言 在做需求过程中我们大概率会遇到在浏览器中下载文件的需求,如果仅仅是这个要求的话很简单,有如下两种解决方式. 第一种是通过 window 对象的 open 方法进行操作,将文件 url 直接在浏览 ...

  3. (一)自学java必备技能开头篇:下载哔哩哔哩文件改名

    一.前言 本人是自学java,无意中发现了B站这个可以学习的网站,但是在B站上面学习实在是太痛苦了,如果网络不好的情况下更加是痛苦,尤其是对于我这种精益求精具有强迫症的人来说简直是雪上加霜. 而且如果 ...

  4. ie11浏览器可以下载java吗_IE11浏览器怎么下载?

    虽然微软已经停止对IE浏览器技术支持,但很多行业应用依旧离不开IE浏览器,最后,也是最新版IE浏览器是IE11版本,那么,IE11浏览器怎么下载呢?还好,微软保留IE11浏览器官方下载通道. 尽管Wi ...

  5. java byte 图片浏览器直接显示_以Spring Boot的方式显示图片或下载文件到浏览器的示例代码...

    以Java web的方式显示图片到浏览器以Java web的方式下载服务器文件到浏览器 以Spring Boot的方式显示图片或下载文件到浏览器 请求例子:http://localhost:8080/ ...

  6. Android之在Java socket作为服务器里面返回数据头部怎么写入浏览器需要下载文件的文件名

    1 问题 Android app里面写了一个Java socket的简单服务器,在浏览器里面输入相应的IP和端口访问服务器下载文件,Java socket怎么写返回数据的头部信息,浏览器才知道需要下载 ...

  7. java安卓浏览器下载文件,JAVA实现文件下载,浏览器端得到数据没反应解决方案

    JAVA实现文件下载,浏览器端得到数据没反应 代码如下 public void doPost(HttpServletRequest request, HttpServletResponse respo ...

  8. java 下载zip文件_Java以压缩包方式下载文件

    从云服务器上下载文件,以压缩包方式下载 以下载多个文件为例,需要导入zip4j的jar包,版本不要太高 public void downloadZip(List list, HttpServletRe ...

  9. java根据Freemarker模板渲染出Excel文件并在浏览器中下载

    **java根据Freemarker模板渲染出Excel文件并在浏览器中下载** 准备工作 1.导入的依赖 2.创建模板 Freemrker语法大全: [Freemarker语法使用请点击该链接跳转学 ...

最新文章

  1. 《C++primer》第一章--开始
  2. iOS开发UI篇—懒加载
  3. 编程软件python中的if用法-Python编程工具pycharm的使用
  4. sift的java实现解述
  5. VTK:图表之SelectedVerticesAndEdges
  6. mysql安装及一些注意点
  7. Visual Studio引入外部库 ---- 弄懂静态库lib和动态库dll
  8. CDateTimeUI类源码分析
  9. ORA-39171: 作业出现可恢复的等待
  10. Backpropagation
  11. python图灵机器人怎么退出_python调用图灵机器人实现微信自动回复
  12. 8086汇编语言实现数组冒泡排序(全注释)
  13. 什么时候用DFS,什么时候用BFS?(DFS和BFS的特点和异同)
  14. Precision、Recall、F计算:举例
  15. 【操作系统 · 调度】多处理器 实时调度
  16. python课堂笔记之django-day02(11)
  17. SAP-如何学好SAP BASIS
  18. 网页游戏服务器的源代码武者无敌_周志宏:私服游戏 别拿法律当儿戏
  19. SEO关键词优化 - 利用免费资源刷排名
  20. CalHypso——用于计算面积高程积分(HI)曲线的ArcGis扩展工具

热门文章

  1. InstantOC2.2.2
  2. 素数筛(筛选法求素数)
  3. QString,QByteArray和QBitArray之间的转换(原创)
  4. springboot+poi开发excel导出 加载Excel模板导出 Excel批量导出详解
  5. 关于自动生成数据集的一些事
  6. zookeeper挂掉了dubbo还能继续使用吗?
  7. JS实现文本的语音朗读
  8. 南安普顿大学计算机专业如何,南安普顿大学计算机专业,南安最值得读的专业之一!...
  9. 【摄影】如何利用手机拍摄好的摄影作品
  10. React + Redux + Express + Mongodb 零基础开发完整大型商城网站视频教程(97 个视频)