You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IE9环境下实现PDF文件下载而非浏览器打开的技术问题

解决IE9下PDF文件直接打开而非下载的问题

问题分析

你当前用的<a>标签download属性在IE9里不支持,而且浏览器默认会预览PDF文件,导致跳转到新视图,不符合需求。要同时实现TIFF和PDF在IE9里强制下载,得从后端响应头配置或者前端IE专属下载逻辑入手。

方案1:后端配置响应头(最优解)

直接在后端给PDF文件设置Content-Disposition响应头,让浏览器直接触发下载,不需要前端额外处理。

以ASP为例(你的代码里用了<%= %>,推测是ASP环境),输出文件时添加以下代码:

' 针对PDF文件设置响应头
Response.ContentType = "application/pdf"
' attachment表示强制下载,filename指定下载后的文件名
Response.AddHeader "Content-Disposition", "attachment; filename=""" & fileName & """"
' 输出文件内容的代码...

TIFF文件同理,不过浏览器一般不会预览TIFF,所以主要处理PDF即可。配置后,原有的<a>标签就能正常让IE9下载PDF,不会打开预览。

方案2:前端IE9专属下载逻辑(后端无法修改时用)

如果后端没法改,就用IE9支持的ActiveXObject来实现二进制文件下载,绕过浏览器预览机制。

步骤1:编写下载函数

function downloadFile(fileUrl, saveFileName) {
    // 检测是否是IE9
    if (navigator.userAgent.indexOf('MSIE 9.0') > -1) {
        try {
            var xhr = new ActiveXObject("Microsoft.XMLHTTP");
            xhr.open("GET", fileUrl, true);
            xhr.onreadystatechange = function() {
                if (xhr.readyState === 4 && xhr.status === 200) {
                    var stream = new ActiveXObject("ADODB.Stream");
                    stream.open();
                    stream.type = 1; // 设置为二进制流
                    stream.write(xhr.responseBody);
                    stream.position = 0;
                    // 2表示覆盖已存在的同名文件,1表示不覆盖
                    stream.saveToFile(saveFileName, 2);
                    stream.close();
                    alert("文件已下载完成");
                }
            };
            xhr.send();
        } catch (e) {
            alert("下载失败,请检查IE的ActiveX控件是否允许运行");
        }
    }
}

步骤2:修改<a>标签

把原来的链接改成调用这个函数:

<a href="javascript:void(0)" onclick="downloadFile('<%=fileName%>', '<%=fileName%>')"><%=fileName%></a>

注意事项

  • IE9下需要用户允许ActiveX控件运行(默认可能禁用),如果没反应,让用户检查IE的「Internet选项」→「安全」→「自定义级别」里,启用「对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本」。

内容的提问来源于stack exchange,提问作者james2611nov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 23:48:18