Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/480.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript->;文件下载边缘->;“设置”;从「;到实际地点_Javascript_Download_Microsoft Edge - Fatal编程技术网

Javascript->;文件下载边缘->;“设置”;从「;到实际地点

Javascript->;文件下载边缘->;“设置”;从「;到实际地点,javascript,download,microsoft-edge,Javascript,Download,Microsoft Edge,我可以从我的服务器下载文件。经过大量研究,我在javascript中发现了这种方法: fetch("requestUrlToFile", { method: "GET", headers: { "authorization": "jwt" } }) .then(checkStatus) .then(function(res){ return res.bl

我可以从我的服务器下载文件。经过大量研究,我在javascript中发现了这种方法:

fetch("requestUrlToFile",
    {
        method: "GET",
        headers: {
            "authorization": "jwt"
        }
    })
        .then(checkStatus)
        .then(function(res){
            return res.blob();
        })
        .then(function(blob){
            var filename =  "PdfName-" + new Date().getTime() + ".pdf";
            if (typeof window.navigator.msSaveBlob !== 'undefined') { // IE
                var blob = new Blob([blob], { type: 'application/pdf' });
                window.navigator.msSaveBlob(blob, filename);
            } else {//if (typeof window.chrome !== 'undefined') { // Chrome
                var link = document.createElement('a');
                link.id = "download_" + billingId;
                link.className = "hidden";
                link.href = window.URL.createObjectURL(blob);
                link.download = filename;
                $downloads.appendChild(link);
                link.click();
                $downloads.innerHTML = "";
            } 
        });
这适用于所有现代浏览器(IE 10+、Edge、FF、Chrome、Opera)。但是Safari和移动浏览器不起作用


你能帮我吗

我找到了一个解决方案,它适用于我在这里找到的每个常见浏览器:

我在github:上使用Eligray的
Blob实现作为polyfill

测试:

  • IE>10(Windows)
  • 边缘(窗口)
  • Chrome(Windows、Android、iOS)
  • FireFox(Windows、Android)
  • Safari(Mac、iOS、Windows)
  • 歌剧院(Windows)
fetch(“requestUrlToFile”,
{
方法:“获取”,
标题:{
“授权”:“jwt”
}
})
.然后(检查状态)
.然后(功能(res){
返回res.blob();
})
.then(功能(数据){
var filename=“PdfName-”+新日期().getTime()+“.pdf”;
var blob=new blob([data],{type:'application/pdf'});
下载(blob,文件名);
});
函数下载(blob,文件名){
//首先,我们需要为UTF-8文本类型预先设置BOM
if(/^\s*(?:text\/\s*| application\/xml\s*\/\s*\+xml)\s*.*charset\s*=\s*utf-8/i.test(blob.type)){
blob=newblob([String.fromCharCode(0xFEFF),blob],{type:blob.type});
}
//然后我们需要声明所有变量来检查需要使用哪个下载
var donwload_url=window.url | | window.webkitURL | | window
,blob_url=download_url.createObjectURL(blob)
,下载链接=document.createElements(“http://www.w3.org/1999/xhtml“,“a”)
,在下载链接中使用“下载”
,click=function(node){var event=new MouseEvent(“click”);node.dispatchEvent(event);}
,is|u opera=(!!view.opr&&!!opr.addons)| |!!view.opera | navigator.userAgent.indexOf('opr/')>=0
,is_chrome=!!view.chrome&&!!view.chrome.webstore
,is_safari=Object.prototype.toString.call(view.HTMLElement).indexOf('Constructor')>0 | | | | is_chrome&&!is_opera&&view.webkitAudioContext!==未定义
,is_chrome_ios=/CriOS\/[\d]+/.test(navigator.userAgent)
,forceable_type=“应用程序/八位字节流”
,type=blob.type
,强制下载=类型===可强制下载类型;
//现在我们可以开始检查我们使用的下载
if(typeof window==“undefined”| typeof window.navigator!==“undefined”&/MSIE[1-9]\./.test(window.navigator.userAgent)){
return;//IE