新闻建站cms系统、政府cms系统定制开发

广州网站建设公司-阅速公司

asp.net新闻发布系统、报纸数字报系统方案
/
http://www.ysneo.com/
广州网站建设公司
您当前位置:首页>网站技术

网站技术

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

发布时间:2019/5/29 16:34:45  作者:Admin  阅读:1092  

广告:阿里云采购优惠专区

<!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新闻系统购买咨询
扫描关注 广州阅速软件科技有限公司
扫描关注 广州阅速科技