关于JS访问文件服务器的HTTP文件地址实现文件下载
开发过程中遇到一个需求变动,主管要求网站在提供文件下载的时候不要使用 服务写流的形式(out.write)进行文件下载。需要改造成将文件生成到 文件服务器路径下,然后以http的形式直接进行文件访问、下载。 我想这个访问http地址显示文件的方式,大家应该都回使用到,比如:需要加载远程图片时<img src = "http://...." />。而现在需要实现的是文件下载...
(需求:下载文件类型为PDF文件)
刚开始还以为直接使用 window.open()或者 <a href="" target="blank"><a/>就能够轻松实现下载,说到这里是不是很天真。
上面这两种方式貌似之后再返回的是压缩包的情况下才会下载。而PDF使用这个方法360,google等浏览器中都回直接进行文件预览。
所以上面的两种方法就被我排除了。
于是我开始了百度,搜索了半天,发现有两种解决方案:
一、使用第三方插件的形式,如:jQuery的插件jdownload,但是它是以弹出框提示信息的形式,需要客户再点击弹出框的下载按钮后才能进行文件下载,------排除。
二、使用iframe实现文件下载
具体实现方式:
//触发函数function downloadfile(url) {var iframe = document.createElement("iframe");iframe.src = url;iframe.style.display = "none";document.body.appendChild(iframe);}
这种方式也有缺陷,只能IE浏览器才能进行下载,使用google浏览器时就报错了,错误如下:
Resource interpreted as Document but transferred with MIME type application/pdf
根据这个错误提示我又开始寻找解决方案, 由于访问图片是根据tomcat服务器,我就想是不是tomcat服务器的mime-type缺少了application/pdf类型而导致的。然后我就找到了tomcat的web.xml文件,却发现mime-type中有application/pdf这个类型。 又一次进入蒙圈的状态····
又开始找啊找,又找到了一种方式,html5为 <a>标签提供了一个download属性,会将<a>标签访问路径后的资源进行下载, download中填写的是下载后的文件名。这个方法总算是解决了我的问题。 具体实现方式:
<a download="" href="" target="blank" id="downPdf"></a>//js方法
$.post(url,{param1,param2},function(data){ if(data.code==0){try{ var a = document.getElementById("downPdf");a.href=data.url;a.download=data.fileName;a.click();}catch(e){ } }else{alert(data.errorMsg);} });
为了解决这个问题,我是绕了一圈又回到原点,说多了都是泪啊。 希望这个解决方案能够帮助到大家。
关于JS访问文件服务器的HTTP文件地址实现文件下载相关推荐
- Node.js静态文件服务器实战[转]
p.s. 在下面这篇文章的指导下,做了一个静态文件服务器,见:https://github.com/walkerwzy/node_static_server ==== 这是一篇阐述得比较详细的文章,从 ...
- SpringMVC 静态资源CSS,JS访问不了 解决方法
SpringMVC 静态资源CSS,JS访问不了 解决方法 参考文章: (1)SpringMVC 静态资源CSS,JS访问不了 解决方法 (2)https://www.cnblogs.com/peiy ...
- 如何使用 Node.js 访问 SAP HANA Cloud 数据库里的数据
登录 SAP Business Technology Platform,找到 space 下自己创建好的 HANA Cloud 实例,右键菜单选择 Copy SQL Endpoint,将 HANA C ...
- 用JS访问iframe中的元素
用JS访问iframe中的元素 1.首先,如何访问iframe中的元素?见如下代码: (1)1.htm源码: <input type=button value="test" ...
- Node.js快速文件服务器(通过HTTP的静态文件)
本文翻译自:Node.js quick file server (static files over HTTP) Is there Node.js ready-to-use tool (install ...
- 打开共享计算机不提示密码窗口,windows访问文件服务器共享时不弹出输入用户名和密码窗口...
windows访问文件服务器共享时不弹出输入用户名和密码窗口 发布时间:2020-05-29 15:42:33 来源:亿速云 阅读:1957 作者:鸽子 问题描述: 在客户端电脑,用非administ ...
- windows访问文件服务器共享时不弹出输入用户名和密码窗口
问题描述: 在客户端电脑,用非administrator本地用户登陆系统,访问文件服务器共享时没有弹出输用户名和密码的窗口,而是直接进入共享枚举,但没有任何访问权限.如果在客户端电脑用administ ...
- 访问文件服务器提示“服务器存储空间不足”的解决方法
症状: 访问windows server 2003 R2文件服务器共享时一直提示"服务器存储空间不足,无法处理此命令,Not enough memory to complete transa ...
- js 访问android 路径,Android与JS进行交互传文件路径
webview+h5这种混合开发最近很火,其中最重要的大概就是java代码和js的交互了,刚接触这东西两天,写写收获. 新建一个assets文件夹,要与res这个文件夹同级,其中存放web项目. 先看 ...
- js访问对方手机文件夹_前端开发——解决vue首次访问太慢的问题
一.问题:vue也算是现在流行的前端框架,vue打包时(npm run build),会生成一个index.html静态页面和一个静态文件夹,文件夹中有css,js,img等等,其中让我们注意的就是J ...
最新文章
- 线程: ReentrantLock类
- BeanFactory笔记
- Python3中的内置函数
- python自动投递简历_python模拟登录前程无忧,发送简历
- pytorch学习笔记(5):vgg实现以及一些tricks
- 浅谈设备租赁管理系统的选型之路
- 【长期更新】Linux学习笔记
- 【APP 测试】绕过华为手机打开 USB 调试需要先登录华为账号问题
- 计算机wifi无法打开,电脑中wifi设置网址无法打开的原因和解决方法
- python实现之初等函数二——反函数
- 玩转云服务器,怎样用云服务器架设搭建游戏:浪剑天下架设教程,手把手教你架设游戏服务器,小白一看就会
- Java面向对象原谅帽
- Eclipse MyEclipse 代码提交时,让svn忽略classpath、target、.project
- str和repr显示格式
- Java之Builder模式
- 计算机设置定时关机win10,win10系统定时关机如何设置?
- 【2013Esri中国用户大会】盘点影像技术三大亮点
- 删除战神引擎手游服务端里面自带的病毒文件教程
- 3D小人 思考/问号 表情图 png格式
- Delphi 2007 创建TIdHttp对象连接池
热门文章
- RFID射频识别技术介绍及简单应用
- solr带carrot2插件可以用配置好的solrconfig.xml
- python可以下载百度文库_不用下载券也能下载百度文库资料,Python帮你轻松搞定...
- 数字电子技术基础(四):门电路(二极管)
- 教程:提取微信表情包、给公众号分组、在电脑上看公众号、微信提现免手续费
- 【Java笔记】Java开发实战经典 - 第六章
- 笔记:《深入浅出统计学》第十三章:假设检验(显著性检验)
- cadence17.4 下载安装
- cadence SPB16.6原理图库(.olb)集合的库内容列表2
- Python编程从入门到实践(基础入门)