在开发项目时遇到,在jsp 中通过 a 标签的方式,访问后台servlet,调用 客户端以下载的方式打开文件,遇到中文文件名乱码,找不到问题,导致下载失败问题,弄了很久才弄出点样子,不是很科学,但暂时可用

       大体思路:

     

     1.文件夹中存放要下载的文件名为 英文文件名;

     2.. 前台jsp  a标签携带 路径及文件名访问后台servlet,其中路径中只有不含有中文,文件名可以为中文,访问后台servlet;

     3. 后台先取出文件路径,和后台准备的参数进行组装拼接,得到不含中文的下载路径,构建输入流;

     4. 因为我的tomcat中的  servlet.xml 中8080端口位置有设置  编码,所以后台直接取出含有中文的文件名,作为下载文件的文件名通知客户端以下载的方式打开进行下载

servlet 中设置字符编码

<Connector port="48080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="38443" URIEncoding="ISO-8859-1"/>

jsp页面中 通过 a 标签携带信息访问后台servlet

<a href='servlet/DownLoadFileSvl?path=文件相对路径&fileName=文件名'>下载</a>

后台servlet get请求

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String path = request.getParameter("path");// get方式提交的path = new String(path.getBytes("ISO-8859-1"), "UTF-8");// 前台传上来的文件相对路径log.debug("前台传上来的文件相对路径: " + path);String path1 = this.getServletContext().getRealPath("").replace(request.getContextPath() + "/", "");log.debug("\t\n--获取的文件夹名称:" + path1);String upLoad = path1 + "/file/" + path;  //组装下载路径upLoad = new String(upLoad.getBytes(), "utf-8");// 构建输入流InputStream in = new FileInputStream(upLoad);// 下载response.setCharacterEncoding("utf-8");log.debug("\n\t下载的文件名:  " + request.getParameter("fileName"));// 通知客户端以下载的方式打开response.setHeader("Content-Disposition", "attachment;filename="+ request.getParameter("fileName"));OutputStream out = response.getOutputStream();int len = -1;byte b[] = new byte[1024];while ((len = in.read(b)) != -1) {out.write(b, 0, len);}in.close();out.close();}


以上就是今天的想法,没有好好整理过的,后期有时间再进行整理。



jsp + servlet 通过a 标签下载文件相关推荐

  1. a标签下载文件,js/jq创建a标签导出Excel文件

    a标签下载文件,js/jq 创建a标签导出Excel文件 1.设置dom(html) <button type="button" class="layui-btn ...

  2. 使用a标签下载文件,浏览器会直接打开解决方案

    使用a标签下载文件,浏览器会直接打开解决方案 背景 一.HTML中的a标签实现点击下载 二.即使使用a标签的download属性,chrome浏览器还是会打开 三.解决方案 解决方案一:使用ajax请 ...

  3. js下载文件及前端使用a标签下载文件download属性失效问题

    通常下载通过document.createElement创建虚拟a标签 function downloadFileUrl(val, url, fileName) {if (isVal) return ...

  4. a标签下载文件header中带上用于鉴权的token

    加了统一鉴权以后  如果把下载接口也拦截了 且前端使用的是a标签 可以用如下方法解决 替换调请求url和请求方式 , 方式一和方式二任意注释一个就可以运行了 方式1用的是原生的XmlHttpReque ...

  5. A 标签下载文件 Header 中带上用于鉴权的 Token

    加了统一鉴权以后,可能会把 A 标签下载的接口也给拦截了,但是 A 标签是无法带上 Token 的,本文将介绍如何让 A 标签支持像 Ajax 一样发送请求. 加了统一鉴权以后 如果把下载接口也拦截了 ...

  6. JSP+Servlet使用commons-fileupload上传文件连接被重置解决方案

    问题描述 在JSP+Servlet下,使用commons-fileupload上传文件,网页显示连接被重置,同时服务器端莫名终止. 如图所示: 解决过程 搜索该问题无果,搜索回顾commons-fil ...

  7. Vue项目:js模拟点击a标签下载文件并重命名,URL文件地址下载方法、请求接口下载文件方法总结。

    URL文件地址下载方法 一.正常情况下,我们都如此下载文件并修改文件名,在a标签上面添加download属性 //文件下载downFile() {if ('download' in document. ...

  8. JS a标签下载文件而不打开文件

    // 下载文件 function downfile(obj) {var url = $(obj).attr("files");//url = "http://10.19. ...

  9. a标签下载文件,浏览器变打开预览的解决方案

    前景: 处理接口返回的文件链接需要下载,例如http://xxxxx/xxx.jpeg,使用a标签进行下载时(加了download),浏览器对这些类型的文件可以解析,还会打开这个文件在浏览器上进行预览 ...

最新文章

  1. 【Android 安全】DEX 加密 ( 支持多 DEX 的 Android 工程结构 )
  2. 【一行命令】ubuntu 16.04 LTS安装pip3
  3. 玩游戏计算机配置,玩游戏的电脑需要什么配置?
  4. 【数据分析】2020年创业公司到底过得怎么样?数据分析来为你揭晓
  5. 转转转!java继承中的this和super
  6. MTK 驱动开发(43)---GPS问题分类--MTK ALPS GPS的特殊知识
  7. 计算机屏幕画图工具,电脑屏幕画笔工具(Pointofix)
  8. Unlock Music音乐解锁源码
  9. Matlab使用EMD
  10. LED背光源行业的产业链升级
  11. 视频剪辑制作教学:分享十种剪辑技巧,打好基础很重要
  12. 不同编程语言下CH347DLL的调用方法
  13. unbalanced enable irq
  14. visio的替代者yEd Graph Editor
  15. Android 版本号和分支查看
  16. 蓝牙设备删除失败_这软件能让你的蓝牙耳机,用上AirPods的功能
  17. bootstrap和css样式兼容(ie、360、qq)不同浏览器的解决办法
  18. SDUT实验七编程题7-3 求算式的和[1]
  19. 怎么显示文件扩展名即后缀
  20. web html javascript 醇前段 无线弹力球游戏 开发 开发侧率解析 加代码实例

热门文章

  1. 奉劝学弟学妹,学完JavaScript就该学TypeScript了,让我们一起了解TypeScript和如何去搭建运行环境吧
  2. 做到这一点,你也可以成为优秀的程序员(转)
  3. 垃圾回收只知道标记清除?一文帮你打通V8垃圾回收
  4. 手写由链表设计的简易队列
  5. 动态规划--01背包问题详解
  6. 敏捷软件开发(2)--- 设计原则
  7. html中表格修改标题间距,css表格间距怎么调?
  8. 数组中的slice()方法和splice()
  9. C# dll注入(指定进程注入指定dll)
  10. Android 回车换行的持久化