Java Web项目中经常要用到的文件下载功能。

从前端到后台实现为jsp+java

后台实现思路

1 得到文件在服务器上存储的绝对路径

2 将文件读入文件流

3 判断浏览器代理并设置不同的编码格式

4 设置响应头

5 循环取出流中的数据

6 关闭流

代码

jsp代码 <button id="download">点击下载</button>
<script>
$("#download").click(function(){
location.href=downloadFile.do//此处为后台在struts。xml中配置的方法名
})
</script>

java代码

/**
* 下载文件
*/
public void downloadFile(){
//根据条件得到文件路径
String fileurl="/01/demand/upload/20160316/下载.docx";
System.out.println("===========文件路径==========="+url);
//将文件读入文件流
InputStream inStream = new FileInputStream(fileurl);
//获得浏览器代理信息
final String userAgent = super.getRequest().getHeader("USER-AGENT");
//判断浏览器代理并分别设置响应给浏览器的编码格式
String finalFileName = null;
if(StringUtils.contains(userAgent, "MSIE")||StringUtils.contains(userAgent,"Trident")){//IE浏览器
finalFileName = URLEncoder.encode(showValue,"UTF8");
System.out.println("IE浏览器");
}else if(StringUtils.contains(userAgent, "Mozilla")){//google,火狐浏览器
finalFileName = new String(showValue.getBytes(), "ISO8859-1");
}else{
finalFileName = URLEncoder.encode(showValue,"UTF8");//其他浏览器
}
//设置HTTP响应头
super.getResponse().reset();//重置 响应头
super.getResponse().setContentType("application/x-download");//告知浏览器下载文件,而不是直接打开,浏览器默认为打开
super.getResponse().addHeader("Content-Disposition" ,"attachment;filename=\"" +finalFileName+ "\"");//下载文件的名称
System.out.println(showValue);
// 循环取出流中的数据
byte[] b = new byte[1024];
int len;
while ((len = inStream.read(b)) > 0){
super.getResponse().getOutputStream().write(b, 0, len);
}
inStream.close();
super.getResponse().getOutputStream().close();
}catch(Exception e) {
e.printStackTrace();
System.out.println("==========出错了!!===========");
}
System.out.println("============成功了!!===========");
}

struts.xml代码

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="downloadFile" extends="interceptor-default" namespace="/downloadFile">
<action name="downloadFile" class="downloadFile.java" method="downloadFile">
</action>
</package>
</struts>

Java Web实现使用浏览器下载文件代码相关推荐

  1. 解决java web中safari浏览器下载后文件中文乱码问题

    解决java web中safari浏览器下载后文件中文乱码问题 参考文章: (1)解决java web中safari浏览器下载后文件中文乱码问题 (2)https://www.cnblogs.com/ ...

  2. Java Web实现 使用浏览器从服务器下载文件

    Java Web实现 使用浏览器从服务器下载文件. 代码实现: package com.juneyaoair.util;import lombok.SneakyThrows;import javax. ...

  3. Java Web项目中遇到的文件上传与下载问题

    (转发自:https://www.cnblogs.com/xdp-gacl/p/4200090.html)   在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中 ...

  4. springboot Java实现多文件的zip压缩操作 + 通过浏览器下载文件的两种方式

    注只适配utf-8的场景,待完善! 压缩为zip文件 通过java程序输出文件 /*** 功能:压缩多个文件成一个zip文件* @param srcfile:源文件列表* @param zipfile ...

  5. Java web中不同浏览器间导出Excel文件名称乱码问题解决方案

    Java web中不同浏览器间导出Excel文件名称乱码问题解决方案 参考文章: (1)Java web中不同浏览器间导出Excel文件名称乱码问题解决方案 (2)https://www.cnblog ...

  6. Java 浏览器下载文件及文件预览

    插曲想记录一下,以后可以来粘贴复制用 一>浏览器下载文件 setContentType() 该实体头的作用是让服务器告诉浏览器它发送的数据属于什么文件类型. 没有缓存 response.addH ...

  7. 解决浏览器下载文件时中文文件名乱码的问题

    解决浏览器下载文件时中文文件名乱码的问题 很多时候我们需要在后台为前端提供文件下载的功能,但是当文件名中有中文时我们不能直接将文件名返回,需要对中文的文件名进行处理后再返回. 一.文件下载contro ...

  8. 【Apache POI】Java Web根据模板导出word文件

    最近工作中遇到一个需求:根据word模板文档导出word文件. 查阅了一些资料,发现Apache POI可以实现文档读写的功能,于是就研究了一下,总结如下: Apache-POI在线Javadoc:h ...

  9. python模拟浏览器下载文件_python第一个脚本,模拟浏览器下载文件 | 学步园

    用wget命令下载文件总是失败.用python脚本模拟浏览器下载,代码如下: #!/usr/bin/python import sys from urllib import FancyURLopene ...

  10. Python+Selenium练习篇13-设置浏览器下载文件默认地址

    本文介绍如何设置浏览器下载文件默认地址 设置Selenium自动化下载的浏览器默认地址 本人使用浏览器Chrome,python3.7 代码如下: # coding=utf-8 from seleni ...

最新文章

  1. [Cocoa]深入浅出Cocoa之Core Data(4)- 使用绑定
  2. centos编译安装python_centos编译安装python3.6.4
  3. 本机的计算机管理员,c# 获得本机计算机名字,获得本机当前系统登陆用户和管理员权限,Environment...
  4. ARM和NEON指令 very nice
  5. 12001.linux应用程序之i2c编程
  6. 每天备份NAS上的www目录到一块单独的硬盘上
  7. 三次握手,四次挥手(大白话)
  8. sql取整数_SQL高级功能
  9. 大数据的发展体现在哪些方面
  10. 华为8817升级Android5,华为c8817E官方升级包大集合
  11. DO280介绍红帽OPENSHIFT容器平台--管理OpenShift与课外补充
  12. shadowgun的飘扬旗帜shader
  13. laragon用php连接数据库,Laragon - PHP 集成环境 - 技术资源库 - by 安拓网络技术资源库 - by 安拓网络...
  14. Excel数据驱动框架实战
  15. 多线程下载王者荣耀高清壁纸(过程超详细)
  16. 「SQL数据分析系列」4.过滤操作
  17. 服务器占用cpu启动就死机,CPU使用率高会不会造成死机?为何?
  18. 超级计算机 噪音,加权噪声
  19. 查询Chrome浏览器本地用户数据文件位置(扩展,主题等)
  20. [MCT01] 状态空间模型 State Space Model

热门文章

  1. 自动设置为兼容模式html,什么是兼容模式?
  2. VMware中Linux虚拟机root密码重置
  3. 腾讯云服务器怎么增加容量,腾讯云服务器磁盘扩容问题小记
  4. w7怎么更换计算机用户名和密码怎么办,win7怎么修改系统用户名
  5. 计算机考研作息时间表,2020考研的最佳作息时间表 如何安排学习时间
  6. 苹果录屏没声音_苹果耳机突然没声音
  7. 柳传志的回复:联想集团大裁员:公司不是家
  8. google_trans_new库:谷歌翻译库Googletrans的替代品
  9. 相关系数r和决定系数R2的那些事
  10. html鼠标悬停显示箭头,Tippy.js 玩转鼠标悬停提示信息