jsp + servlet 通过a 标签下载文件
在开发项目时遇到,在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 标签下载文件相关推荐
- a标签下载文件,js/jq创建a标签导出Excel文件
a标签下载文件,js/jq 创建a标签导出Excel文件 1.设置dom(html) <button type="button" class="layui-btn ...
- 使用a标签下载文件,浏览器会直接打开解决方案
使用a标签下载文件,浏览器会直接打开解决方案 背景 一.HTML中的a标签实现点击下载 二.即使使用a标签的download属性,chrome浏览器还是会打开 三.解决方案 解决方案一:使用ajax请 ...
- js下载文件及前端使用a标签下载文件download属性失效问题
通常下载通过document.createElement创建虚拟a标签 function downloadFileUrl(val, url, fileName) {if (isVal) return ...
- a标签下载文件header中带上用于鉴权的token
加了统一鉴权以后 如果把下载接口也拦截了 且前端使用的是a标签 可以用如下方法解决 替换调请求url和请求方式 , 方式一和方式二任意注释一个就可以运行了 方式1用的是原生的XmlHttpReque ...
- A 标签下载文件 Header 中带上用于鉴权的 Token
加了统一鉴权以后,可能会把 A 标签下载的接口也给拦截了,但是 A 标签是无法带上 Token 的,本文将介绍如何让 A 标签支持像 Ajax 一样发送请求. 加了统一鉴权以后 如果把下载接口也拦截了 ...
- JSP+Servlet使用commons-fileupload上传文件连接被重置解决方案
问题描述 在JSP+Servlet下,使用commons-fileupload上传文件,网页显示连接被重置,同时服务器端莫名终止. 如图所示: 解决过程 搜索该问题无果,搜索回顾commons-fil ...
- Vue项目:js模拟点击a标签下载文件并重命名,URL文件地址下载方法、请求接口下载文件方法总结。
URL文件地址下载方法 一.正常情况下,我们都如此下载文件并修改文件名,在a标签上面添加download属性 //文件下载downFile() {if ('download' in document. ...
- JS a标签下载文件而不打开文件
// 下载文件 function downfile(obj) {var url = $(obj).attr("files");//url = "http://10.19. ...
- a标签下载文件,浏览器变打开预览的解决方案
前景: 处理接口返回的文件链接需要下载,例如http://xxxxx/xxx.jpeg,使用a标签进行下载时(加了download),浏览器对这些类型的文件可以解析,还会打开这个文件在浏览器上进行预览 ...
最新文章
- 【Android 安全】DEX 加密 ( 支持多 DEX 的 Android 工程结构 )
- 【一行命令】ubuntu 16.04 LTS安装pip3
- 玩游戏计算机配置,玩游戏的电脑需要什么配置?
- 【数据分析】2020年创业公司到底过得怎么样?数据分析来为你揭晓
- 转转转!java继承中的this和super
- MTK 驱动开发(43)---GPS问题分类--MTK ALPS GPS的特殊知识
- 计算机屏幕画图工具,电脑屏幕画笔工具(Pointofix)
- Unlock Music音乐解锁源码
- Matlab使用EMD
- LED背光源行业的产业链升级
- 视频剪辑制作教学:分享十种剪辑技巧,打好基础很重要
- 不同编程语言下CH347DLL的调用方法
- unbalanced enable irq
- visio的替代者yEd Graph Editor
- Android 版本号和分支查看
- 蓝牙设备删除失败_这软件能让你的蓝牙耳机,用上AirPods的功能
- bootstrap和css样式兼容(ie、360、qq)不同浏览器的解决办法
- SDUT实验七编程题7-3 求算式的和[1]
- 怎么显示文件扩展名即后缀
- web html javascript 醇前段 无线弹力球游戏 开发 开发侧率解析 加代码实例