全讯网新

全讯网新
cms全讯网新网站系统、政府cms定制开发

广州网站建设全讯网新-阅速全讯网新

报纸全讯网新网站内容全讯网新一体化报刊软件联系电话
/
http://dmanswers.com/
广州网站建设全讯网新
您当前位置:首页>网站技术

网站技术

javascript实现文件另存为(web api)

全讯网新时间:2019/5/29 16:34:45  作者:Admin  阅读:9  

<!doctype html>

全讯网新<html>

全讯网新<head>

<meta charset="utf-8">

全讯网新<title>无标题文档</title>

全讯网新</head>

全讯网新<body>

<script type="text/javascript">

全讯网新function _download(url,name) {

var pdfurl=url;

全讯网新 var fileName = name;

// 创建对象

var xhr = xhr = new XMLHttpRequest()

全讯网新 // 创建一个 GET 请求,异步

全讯网新 xhr.open('GET', pdfurl, true);

// 设置返回数据的类型为arraybuffer

全讯网新 //xhr.responseType = 'arraybuffer';

xhr.responseType = 'blob' ;

// 设置请求头值

全讯网新 //xhr.setRequestHeader(KEYS.JWTToken, getStorageItem(KEYS.JWTToken));

全讯网新 // 接收到完整的响应数据时触发回调处理函数

全讯网新 xhr.onload = function() {

if (this.status === 200) {

// 获取请求头Content-Type的值,用来判断是否是文件流下载

var type = xhr.getResponseHeader('Content-Type')

// application/json;charset=UTF-8:就是指“无类型”,一般的字节流用于数据传输,非文件下载

全讯网新 if (type === 'application/json;charset=UTF-8') {

全讯网新 // this.response为arraybuffer对象,转为uint8数组

全讯网新 // var uint8 = new Uint8Array(this.response)

// 解决使用fromCharCode后中文乱码的问题

全讯网新 // var resToString = decodeURIComponent(escape((String.fromCharCode(...uint8))))

// var message = JSON.parse(resToString).message

全讯网新 // console.log(message)

// return

}

// Blob()的第一个参数必须为数组,即使只有一个字符串也必须用数组装起来

var blob = new Blob([this.response], {type: type})

// window.navigator.msSaveBlob:以本地方式保存文件

全讯网新 if (typeof window.navigator.msSaveBlob !== 'undefined') {

全讯网新 window.navigator.msSaveBlob(blob, fileName)

} else {

全讯网新 var URL = window.URL || window.webkitURL

// 创建新的URL表示指定的File对象或者Blob对象

var objectUrl = URL.createObjectURL(blob)

if (fileName) {

全讯网新 // 创建a标签用于跳转至下载链接

全讯网新 var a = document.createElement('a')

// download:指示浏览器下载URL而不是导航到它,也可设置下载文件的名称

if (typeof a.download === 'undefined') {

// window.location:获得当前页面的地址 (URL),并把浏览器重定向到新的页面

window.location = objectUrl

} else {

全讯网新 // href属性指定下载链接

全讯网新 a.href = objectUrl

全讯网新 // dowload属性指定文件名

a.download = fileName

全讯网新 // 将a标签插入body中

全讯网新 document.body.appendChild(a)

全讯网新 // click()事件触发下载

a.click()

// 去除a标签,以免影响其他操作

全讯网新 a.remove()

}

} else {

window.location = objectUrl

}

// 将URL释放

URL.revokeObjectURL(objectUrl)

}

}

}

xhr.send();

}

</script>

<a href="javascript:void(0);" onClick="_download();" >下载</a>

</body>

</html>

相关文章
另存为
cms全讯网新系统购买咨询
扫描关注 广州阅速软件全讯网新有限全讯网新
扫描关注 广州阅速全讯网新