开发过程中遇到一个需求变动,主管要求网站在提供文件下载的时候不要使用 服务写流的形式(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文件地址实现文件下载相关推荐

  1. Node.js静态文件服务器实战[转]

    p.s. 在下面这篇文章的指导下,做了一个静态文件服务器,见:https://github.com/walkerwzy/node_static_server ==== 这是一篇阐述得比较详细的文章,从 ...

  2. SpringMVC 静态资源CSS,JS访问不了 解决方法

    SpringMVC 静态资源CSS,JS访问不了 解决方法 参考文章: (1)SpringMVC 静态资源CSS,JS访问不了 解决方法 (2)https://www.cnblogs.com/peiy ...

  3. 如何使用 Node.js 访问 SAP HANA Cloud 数据库里的数据

    登录 SAP Business Technology Platform,找到 space 下自己创建好的 HANA Cloud 实例,右键菜单选择 Copy SQL Endpoint,将 HANA C ...

  4. 用JS访问iframe中的元素

    用JS访问iframe中的元素 1.首先,如何访问iframe中的元素?见如下代码: (1)1.htm源码: <input  type=button value="test" ...

  5. Node.js快速文件服务器(通过HTTP的静态文件)

    本文翻译自:Node.js quick file server (static files over HTTP) Is there Node.js ready-to-use tool (install ...

  6. 打开共享计算机不提示密码窗口,windows访问文件服务器共享时不弹出输入用户名和密码窗口...

    windows访问文件服务器共享时不弹出输入用户名和密码窗口 发布时间:2020-05-29 15:42:33 来源:亿速云 阅读:1957 作者:鸽子 问题描述: 在客户端电脑,用非administ ...

  7. windows访问文件服务器共享时不弹出输入用户名和密码窗口

    问题描述: 在客户端电脑,用非administrator本地用户登陆系统,访问文件服务器共享时没有弹出输用户名和密码的窗口,而是直接进入共享枚举,但没有任何访问权限.如果在客户端电脑用administ ...

  8. 访问文件服务器提示“服务器存储空间不足”的解决方法

    症状: 访问windows server 2003 R2文件服务器共享时一直提示"服务器存储空间不足,无法处理此命令,Not enough memory to complete transa ...

  9. js 访问android 路径,Android与JS进行交互传文件路径

    webview+h5这种混合开发最近很火,其中最重要的大概就是java代码和js的交互了,刚接触这东西两天,写写收获. 新建一个assets文件夹,要与res这个文件夹同级,其中存放web项目. 先看 ...

  10. js访问对方手机文件夹_前端开发——解决vue首次访问太慢的问题

    一.问题:vue也算是现在流行的前端框架,vue打包时(npm run build),会生成一个index.html静态页面和一个静态文件夹,文件夹中有css,js,img等等,其中让我们注意的就是J ...

最新文章

  1. 线程: ReentrantLock类
  2. BeanFactory笔记
  3. Python3中的内置函数
  4. python自动投递简历_python模拟登录前程无忧,发送简历
  5. pytorch学习笔记(5):vgg实现以及一些tricks
  6. 浅谈设备租赁管理系统的选型之路
  7. 【长期更新】Linux学习笔记
  8. 【APP 测试】绕过华为手机打开 USB 调试需要先登录华为账号问题
  9. 计算机wifi无法打开,电脑中wifi设置网址无法打开的原因和解决方法
  10. python实现之初等函数二——反函数
  11. 玩转云服务器,怎样用云服务器架设搭建游戏:浪剑天下架设教程,手把手教你架设游戏服务器,小白一看就会
  12. Java面向对象原谅帽
  13. Eclipse MyEclipse 代码提交时,让svn忽略classpath、target、.project
  14. str和repr显示格式
  15. Java之Builder模式
  16. 计算机设置定时关机win10,win10系统定时关机如何设置?
  17. 【2013Esri中国用户大会】盘点影像技术三大亮点
  18. 删除战神引擎手游服务端里面自带的病毒文件教程
  19. 3D小人 思考/问号 表情图 png格式
  20. Delphi 2007 创建TIdHttp对象连接池

热门文章

  1. RFID射频识别技术介绍及简单应用
  2. solr带carrot2插件可以用配置好的solrconfig.xml
  3. python可以下载百度文库_不用下载券也能下载百度文库资料,Python帮你轻松搞定...
  4. 数字电子技术基础(四):门电路(二极管)
  5. 教程:提取微信表情包、给公众号分组、在电脑上看公众号、微信提现免手续费
  6. 【Java笔记】Java开发实战经典 - 第六章
  7. 笔记:《深入浅出统计学》第十三章:假设检验(显著性检验)
  8. cadence17.4 下载安装
  9. cadence SPB16.6原理图库(.olb)集合的库内容列表2
  10. Python编程从入门到实践(基础入门)