使用js进行图片下载是很常见的需求,但是解决起来却不是那么顺利。
服务器返回了一个图片地址,网上一搜基本都是用a标签的download属性,但是兼容性实在是很差。这里推荐使用blob。
上代码:
var xhr = new XMLHttpRequest()
xhr.open('GET', url, true)
xhr.responseType = 'blob'
xhr.onload = function () {
if (xhr.status === 200) {
var blob = new Blob([xhr.response], {'type': 'application/octet-stream'})
saveAs(blob, filename)
}
}
xhr.send()
xhr.responseType 返回类型指明blob, 这样返回的xhr.response 就是一个blob对象
{'type': 'application/octet-stream'}是为了兼容safari
最后这个saveAs方法则是使用了file-saver这个库
至此,图片下载功能就完成了~