Javascript->;文件下载边缘->;“设置”;从「;到实际地点
我可以从我的服务器下载文件。经过大量研究,我在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
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