浏览器实现pdf下载、ms http下载、IE不兼容
浏览器实现pdf下载、ms http下载、IE不兼容
pdf下载
后台返回MemoryStream流到JS,JS接收流触发浏览器下载。
步骤:
- 设置Response.ContentType = “application/octet-stream”;
- ajax下载 仅支持xml、json、script、html
- xhr下载,doc、pdf等大文件类型用blob
var blob = this.response;
var a = document.createElement('a');
a.href = window.URL.createObjectURL(blob);
a.download = fileName;
a.click();
文件预览
window.open(url);
IE浏览器不兼容
if (window.ActiveXObject || "ActiveXObject" in window) {//判断是否为IE浏览器,"ActiveXObject" in window判断是否为IE11//判断是否安装了adobe Readerfor (x = 2; x < 10; x++) {try {oAcro = eval("new ActiveXObject('PDF.PdfCtrl." + x + "');");if (oAcro) {flag = true;}} catch (e) {flag = false;}}try {oAcro4 = new ActiveXObject('PDF.PdfCtrl.1');if (oAcro4) {flag = true;}} catch (e) {flag = false;}try {oAcro7 = new ActiveXObject('AcroPDF.PDF.1');if (oAcro7) {flag = true;}} catch (e) {flag = false;}if (flag) {//支持window.open(previewUrl, '_blank'); //打开地址pdf预览} else {//不支持//$("#pdfContent").append("对不起,您还没有安装PDF阅读器软件呢,为了方便预览PDF文档,请选择安装!");alert("对不起,您还没有安装PDF阅读器软件呢,为了方便预览PDF文档,请选择安装!");location = "http://ardownload.adobe.com/pub/adobe/reader/win/9.x/9.3/chs/AdbeRdr930_zh_CN.exe";}} else {window.open(previewUrl,'_blank'); }
ajax触发 下载
var url = '/XXX/XX';var fileName = "XXX.pdf";var xhr = model.XHR();xhr.open('post', url);xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded') //加密url中的字符串 post必须设置headerxhr.responseType = "blob"; //读取后台response流存储为blob链接xhr.onload = function () {if (this.status == 200 || this.readyState == 4) { //可以只判断statuse 若为onreadystatechange 需要先判断readystate 再status//获取响应流var blob = this.response; //IE9-取不到responseif ('msSaveOrOpenBlob' in navigator) {//处理IE生成的blob链接 支持IE10+window.navigator.msSaveOrOpenBlob(blob, fileName); // 或window.navigator.msSaveBlob(blob,fileName); 判断浏览器是否支持} else {//处理非IE的 blob链接var a = document.createElement('a'); // 最好在html中预先创建a标签,设置hidden, a =document.getElementById()a.href = window.URL.createObjectURL(blob);a.download = fileName; // 必须有download属性实现下载 否则为打开链接a.click();}layer.closeAll();} else {model.popError("下载失败:" + this.status);layer.closeAll();}};xhr.send('filePath=' + res.Data); //发送ajax请求
注意:
判断a标签是否支持download属性
var isSupportDownload = 'download' in document.createElement('a');
目前仅支持firefox、chrome、microsoft edge
判断浏览器是否支持msSaveOrOpenBlob、msSaveBlob:
window.navigator.msSaveOrOpenBlob //是否为 undefined -- IE9-不支持 window.navigator.msSaveBlob // 是否为 undefined -- IE9-不支持
判断浏览器是否支持blob:
new Blob() == undefined //IE9-不支持
ie浏览器不兼容$.post 改用原始 $.ajax
附:
原生xhr初始化格式:
var xhr = null;if (window.XMLHttpRequest) {//判断当前浏览器是否支持XMLHttpRequestxhr = new XMLHttpRequest();} else if (window.ActiveXObject) {//判断当前浏览器是否支持ActiveXObject,这是对于IE浏览器的判断try {xhr = new ActiveXObject("Msxml2.XMLHTTP");//IE6及以后的版本支持的} catch (e) {try {xhr = new ActiveXObject('Microsoft.XMLHTTP');//IE6以下版本的支持} catch (e) {return xhr;}}}return xhr;
浏览器兼容设置:
IE浏览器兼容强力总结!!请看
https://blog.csdn.net/xiaoxiaohui520134/article/details/52352922
这样写可以达到的效果是如果安装了GCF(Google Chrome Frame 谷歌内嵌浏览器框架的简称),则使用GCF来渲染页面,如果没安装GCF,则使用最高版本的IE内核进行渲染。这个插件可以让用户的IE浏览器外不变,但 用户在浏览网页时,实际上使用的是Google Chrome浏览器内核,而且支持IE6、7、8等多个版本的IE浏览器。
浏览器实现pdf下载、ms http下载、IE不兼容相关推荐
- php pdf只能查看不能下载,对于pdf文件不支持浏览器下载如何处理?
最近在工作中遇到这样一个问题,就是知道pdf文件的下载地址,但是所有浏览器对于pdf文件都是在浏览器中打开,不支持下载,需要用户下载下来.于是就做了一个html页面,把下载地址设为downpdf.ph ...
- 浏览器打开pdf,禁止下载打印
之前在网站上打开pdf文件,都是用浏览器查看pdf时自带的功能,可以下载打印,最近要求打开pdf后仅供用户预览,禁止下载打印.网上查了一下,发现有很多前辈都遇到过,解决方法是用pdf.js. 1.下载 ...
- PDF 预览和下载你是怎么实现的?
在开发过程中要求对 PDF 类型的发票提供 预览 和 下载 功能,**PDF** 类型文件的来源又包括 H5 移动端 和 **PC 端**,而针对这两个不同端的处理会有些许不同,下文会有所提及. 针对 ...
- Python爬虫实战- 爬取整个网站112G-8000本pdf epub格式电子书下载
(整个代码附在最后) 目录: 爬虫准备 - 某电子书网站内容架构分析 爬虫前奏 - 网站Html代码分析,如何获取需要的链接? 爬虫高潮 - 测试是否有反爬虫措施,测试是否能正常下载一个sample ...
- 移动端和PC端的pdf预览与下载
34.移动端和PC端的pdf的预览与下载 1.预览 需求:在手机端实现pdf的文件与下载,主要是zlb_app中 实现过程:在研究了vue-pdf.pdfjs.pdfh5之后,选择了vue-pdf-s ...
- pdf 无须浏览直接下载
最近页面有下载pdf需求,之前a标签有自带的图片下载,但是pdf浏览器默认会自动浏览打开,介绍一下此方法浏览器无须打开其他页面进行下载文件 浏览器 pdf 无须浏览直接下载 支持多种文件下载 down ...
- 全新万能PDF转换器官方免费下载
导读:怎样将PDF文件资料转换成常用的Word格式是不少用户关心的话题,尤其对于从事文字编辑的上班族来说,在处理PDF文件格式转换的时候,经常发现大部分的专业资料都采用了PDF文件格式.而PDF文件格 ...
- PDF下载与批量下载处理
需求:下载合同,且支持批量下载 思路: 1.点击下载时,发送请求,携带合同的id 2.根据id,获取合同对象,根据对象获取合同文件在服务器上的路径 3.通过IO进行下载 1.单个下载 发送请求,传一个 ...
- Java动态处理PDF合同模板并下载
前期准备步骤: 1.准备一份Word版的电子合同模板 2.通过wps输出为PDF 3.安装Adobe Acrobat DC 4.通过Adobe Acrobat DC打开PDF版电子合同并选择" ...
最新文章
- 150名打工人被AI判定效率低遭开除,“属实是人工智能,能治工人“
- .Net4.0并行库介绍——Cancellation Framework
- where is Angular parts filled
- 福建地震局网站被******挂壮阳广告
- 7. 开启 mysql remote access
- ssh公钥的生成、查看以及config的配置
- P、NP、NPC和NP-Hard相关概念的图形和解释
- 研究生学历,毕业就给房!给户口!
- 视频怎么加水印?这里有你想要的答案
- 疫情下技术人的宅家指南
- java8的stream写法实现去重
- C语言程序设计精髓 第14周——结构设计的艺术 练兵区——编程题
- 【机器人学】牛顿-欧拉动力学方程迭代形式
- Linux下Chelsio T5调试方法
- 五最好的应聘者可以问问题
- HTML5+CSS3小实例:黏性小球loading动画
- Java类的加载及父类子类加载顺序
- CAD软件中文本如何屏蔽
- 液晶面板里面有些什么配件_一张图看懂液晶面板内部结构,竟如此复杂
- 【BLE】蓝牙抓包器 Ellisys 使用说明