前言
实际上我们完全可以使用<a>
标签进行下载操作,但是在某些情况下,<a>
标签并不好使,比如下载oss上的MP3文件。
这个时候我们就需要用到js去处理了。
正文
大概实现思路就是把文件以流的形式下载下来,然后使用URL.createObjectURL()方法创建url,将url提供给<a>
标签使用。
也可以使用HTMLElement.click()方法模拟点击a标签直接进行下载,但不建议这样使用,在某些浏览器模拟点击会被认为是不安全的操作,会提示危险信息。
代码如下
const request = new XMLHttpRequest()
request.open('get',imageURL)
request.responseType = 'blob'
request.onreadystatechange = (res)=>{
if(res.currentTarget.readyState == 4 && res.currentTarget.status==200){
const url = window.URL.createObjectURL(res.currentTarget.response);
console.log(url) //这个url提供给a标签就可以实现下载了
}
}
request.send()