大发3D

大发3D
cms大发3D网站系统、政府cms定制开发

广州网站建设大发3D-阅速大发3D

报纸大发3D网站内容大发3D一体化报刊软件联系电话
/
http://hinaidori.com/
广州网站建设大发3D
您当前位置:首页>网站技术

网站技术

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

大发3D时间:2019/5/29 16:34:45  作者:Admin  阅读:14  

<!doctype html>

<html>

大发3D<head>

大发3D<meta charset="utf-8">

<title>无标题文档</title>

</head>

<body>

<script type="text/javascript">

大发3Dfunction _download(url,name) {

大发3D var pdfurl=url;

var fileName = name;

// 创建对象

var xhr = xhr = new XMLHttpRequest()

// 创建一个 GET 请求,异步

xhr.open('GET', pdfurl, true);

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

大发3D //xhr.responseType = 'arraybuffer';

大发3D xhr.responseType = 'blob' ;

// 设置请求头值

大发3D //xhr.setRequestHeader(KEYS.JWTToken, getStorageItem(KEYS.JWTToken));

大发3D // 接收到完整的响应数据时触发回调处理函数

xhr.onload = function() {

if (this.status === 200) {

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

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

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

if (type === 'application/json;charset=UTF-8') {

// this.response为arraybuffer对象,转为uint8数组

// var uint8 = new Uint8Array(this.response)

大发3D // 解决使用fromCharCode后中文乱码的问题

// var resToString = decodeURIComponent(escape((String.fromCharCode(...uint8))))

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

// console.log(message)

// return

}

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

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

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

大发3D 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)

大发3D if (fileName) {

大发3D // 创建a标签用于跳转至下载链接

var a = document.createElement('a')

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

大发3D if (typeof a.download === 'undefined') {

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

window.location = objectUrl

} else {

// href属性指定下载链接

大发3D a.href = objectUrl

// dowload属性指定文件名

a.download = fileName

// 将a标签插入body中

document.body.appendChild(a)

// click()事件触发下载

a.click()

大发3D // 去除a标签,以免影响其他操作

大发3D a.remove()

}

} else {

大发3D window.location = objectUrl

}

// 将URL释放

URL.revokeObjectURL(objectUrl)

}

}

}

xhr.send();

}

</script>

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

大发3D</body>

</html>

相关文章
另存为
cms大发3D系统购买咨询
扫描关注 广州阅速软件大发3D有限大发3D
扫描关注 广州阅速大发3D