js实现文件,图片下载(v1)

289 阅读1分钟

前言

实际上我们完全可以使用<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()