使用a标签的download属性进行下载操作时,如果下载的是图片视频类的,则只能下载同源文件,非同源的文件浏览器会自动打开浏览而非下载,那么非同源的该如何操作才能下载呢?
其实很简单,只需要在url最后加上“response-content-type=application/octet-stream”即可!至于为什么加这个参数能下载下来,是因为如果你的图片请求返回的响应的 Content-Type是image/*,audio/*等浏览器可以识别打开的文件,就不会去执行下载事件
如果你想要下载,不想要预览,就加上上述添加的参数,它指的是任意类型的二进制流数据,浏览器无法识别打开流数据,就会去下载。
/**
* @description 文件下载
* @param url
* @returns {*}
*/
export function downloadFile(url) {
let a = document.createElement('a')
a.style = 'display: none'
a.download = 'file' + new Date().valueOf()
a.href = url + '?response-content-type=application/octet-stream'
document.body.appendChild(a)
a.click()
document.body.removeChild(a)
}