`
落地窗
  • 浏览: 439848 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

采用html 的a标签,href连接为文件时无法下载解决方案

阅读更多

最简单的下载文件的方式,大家都清楚,是采用html 中的a标签的href连接形式进行下载。
只需要将文件的全路径赋值给href即可。但是这样的话,有的文件默认可以下载,有的则浏览器在网页上直接打开,有时候还会是乱码。这跟客户端没有关系,客户端完全是被动的,他在接收到html流的时候,分析报头,如果报头中指定了文件的下载方式,比如,为excel,则他就会弹框,提示用户是在线打开,还是说保存下载,如果报头中没有指定,浏览器就直接打开,这样对于特殊文件,很容易会产生乱码。所以为了避免这一点,需要在服务器端进行指定。
如果采用程序开发向客户端输出流进行下载的话,很容易指定,如下
response.setContentType("application/x-msdownload; charset=utf-8");
if (request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0)
response.setHeader("Content-Disposition", "attachment; filename="
+  new String(filename.getBytes("UTF-8"), "ISO8859-1"));//firefox浏览器
else if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0)
response.setHeader("Content-Disposition", "attachment; filename="
+ URLEncoder.encode(filename, "UTF-8"));//IE浏览器


如果用a的连接的话,需要修改服务的设置,对于tomcat而言,查看conf/web.xml,寻找所有的mime类型,如果存在你需要下载的文件的话,即不用进行修改,如果不存在的话,需要添加,然后重启服务器,给a标签赋值要下载文件的全路径即可(比如xls的文件就不用修改配置,而rar就需要配置,zip也不需要配置);注意,如果路径中包含中文的话,还需要稍微改动,否则可能会无法下载,需要在Server.xml文件中,在http端口设置处,需要加上编码,如下:
<Connector port="8282" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" 
               URIEncoding="utf-8" />


注意URIEncoding,之所以加上,是因为,针对tomcat而言,tomcat对于get方式请求过来的编码,是在这里进行配置的,对于post请求过来的编码解析方式,可以用传统的request.setContent**方式进行配置,所以文件路径中存在中文名,你必须得告诉服务器怎么解析,以什么样编码进行解析即可!
分享到:
评论

相关推荐

    jquery打包,生成并下载zip文件

    - **创建下载链接**:通过创建一个隐藏的`&lt;a&gt;`标签,设置其`href`属性为ZIP文件的Blob URL,并触发点击事件,从而触发文件下载。 - **下载提示**:在用户完成文件选择并开始打包后,可以使用jQuery展示下载提示...

    文件下载包伪代码,可以解决部分问题

    三、文件下载问题及解决方案 - **同源策略限制**:如果文件不在同一域下,可能受到同源策略限制,需要服务器端配合设置CORS策略。 - **安全考虑**:对于敏感文件,服务器应限制访问权限,例如使用JWT令牌验证用户...

    用Java输出HTML文件

    本文深入探讨如何利用Java编程语言实现这一功能,涵盖关键技术、具体步骤及常见问题解决方案。 #### 一、Java输入输出编程方法 Java作为一款跨平台的语言,拥有强大的输入输出(I/O)处理能力,适用于文件、控制台和...

    java开发常见错误异常

    解决方案是将 target 属性值修改为 `_blank`,例如 `&lt;a href="../../6-图片标签/demo.html" target="_blank"&gt;跳转至图片标签的 html&lt;/a&gt;`。 HTML 异常六:图片不能正常显示错误,使用 img 标签后,页面不显示图片,...

    在程序开发中的乱码问题解决办法

    本文将从多个角度出发,探讨如何在不同的环境下解决中文乱码问题,并给出具体的解决方案。 #### 解决方案 ##### JSP页面中文乱码问题 1. **修改JSP文件编码** - 针对特定的JSP文件,可以通过修改文件的编码来...

    html5的css3-mediaqueries.js和html5.js两个js

    在实际开发中,由于网络环境的限制或者对速度的要求,有时我们无法直接从Google获取这些资源,因此将它们下载到本地并引用,是一个有效的解决方案。将`css3-mediaqueries.js`和`html5.js`这两个文件保存在本地,然后...

    小清新简单404错误单页(含自动跳转) 404页面模板 404跳转代码

    "小清新简单404错误单页(含自动跳转)"是一个专门设计的404页面模板,旨在提供一种既美观又实用的解决方案,以增强用户在遇到错误时的体验。 首先,这个404页面模板以“小清新”的风格设计,意味着它采用了简洁、...

    韩顺平php 181页笔记

    例如,`&lt;a href="a.html" target=”_self,_blank,_top,_parent”&gt;连接到a.html&lt;/a&gt;`,`target`属性控制链接在新窗口或当前窗口打开。`&lt;a&gt;`标签还可以链接到电子邮件地址,如`&lt;ahref="mailto: hanshunping@tsinghua....

    jsoupAPI解析html

    **jsoup API解析HTML** jsoup是一个非常强大的Java库,专为处理真实世界的HTML而设计。它提供了方便的API,用于提取和操作数据,使用...无论是网页抓取、数据提取还是内容修改,jsoup都能提供高效且安全的解决方案。

    phpsql连接

    - 解决方案:检查端口号是否被占用,如果是,可以尝试修改Apache的配置文件中的端口号(如改为8080)。 - 关闭SSL支持:如果不需要SSL功能,可以在配置文件中注释掉或禁用相关设置。 2. **MySQL服务失败**:根据...

    html加javascript 完成 录音 功能.zip

    然后,可以创建一个a标签,设置其href属性为这个URL,通过模拟点击a标签实现文件下载。 6. **1-2论坛**: 这个标签可能是对讨论环境或资源来源的提及,可能表明这个录音功能的实现或问题曾在某个名为"1-2论坛"的...

    Dreamweaver中常见45个问题.docx

    Dreamweaver 中的常见问题解决方案 Dreamweaver 是一个功能强大且流行的网页开发工具,但是在使用 Dreamweaver 时,我们经常会遇到一些问题。下面我们将介绍 Dreamweaver 中常见的 45 个问题的解决方案。 1. 如何...

    网页设计课程设计报告.doc

    - **产品技术支持页面**:发布技术支持文档和技术解决方案。 - **校园招聘页面**:发布招聘信息、应聘流程等。 #### 2. 目录结构 - **伍志强**:项目根目录。 - **Css**:存放CSS样式文件。 - **Images**:存放...

    jsoup Java HTML解析器

    此外,jsoup支持元素的属性值提取,如`&lt;a&gt;`标签的`href`属性。 4. **HTML清理**:jsoup能够对不规范的HTML进行清理,使其符合标准。这对于处理用户输入或者从不受控来源获取的HTML尤其有用,可以防止XSS(跨站脚本...

    html学习文档.pdf

    JavaScript结合DOM编程及服务器端异步通信技术(如Ajax),已经成为RIA(Rich Internet Applications)的一种解决方案。RIA是指那些具有桌面应用程序特性(如丰富的用户体验)的网络应用程序。 ### JavaScript在...

    个人经验总结html实用技巧

    这些技巧都是HTML开发者在日常工作中会遇到的常见问题和解决方案。掌握这些不仅能提高工作效率,还能为用户提供更好的浏览体验。对于初学者来说,熟悉这些基础并不断实践,是提升HTML技能的关键。

    httpclient 静态化网站 project

    这通常通过解析HTML文档,提取出`&lt;a&gt;`标签的`href`属性,然后递归调用HTTP请求来实现。 5. **HTML解析**:项目可能使用了HTML解析库,如Jsoup或TagSoup,来解析从服务器获取的HTML文档,提取所需的数据和链接。 6....

    在vue中实现嵌套页面(iframe)

    在Vue中使用`iframe`,我们可以直接在模板中插入`iframe`标签,并设置相应的属性。 首先,将要嵌入的`iframe`页面放置在Vue项目的静态资源目录下,比如`static`文件夹。这样可以确保在开发环境中,Vue CLI能正确地...

    網絡爬蟲-(自己實現的(語言:java))

    【网络爬虫——Java实现详解】 ...通过学习和实践这样的项目,开发者可以提升自己的全栈技能,更好地理解和运用Java在实际问题中的解决方案。在实际运行时,请确保遵循使用说明,以确保爬虫的正确性和合法性。

    highcharts客户端导出,本地导出

    4. **触发下载**:使用`a`标签的`download`属性,可以模拟文件下载。将base64编码的图片或生成的Excel数据设置为`a`标签的`href`,并触发点击事件,即可在浏览器中下载文件。 通过以上步骤,你就可以在不联网的情况...

Global site tag (gtag.js) - Google Analytics