vue-cli实现下载文件而不是打开文件

Posted 码上暴富

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue-cli实现下载文件而不是打开文件相关的知识,希望对你有一定的参考价值。

vue-cli实现下载文件而不是打开文件

vue-cli实现下载文件而不是打开文件

写一个vue指令,原理就是使用blob实现下载

Vue.directive('down', {
  inserted: (el, binding) => {
    el.style.cssText = 'cursor: pointer;color:write;'
    el.addEventListener('click', () => {
      console.log(binding.value)
      let link = document.createElement('a')
      let url = binding.value
      // 这里是将url转成blob地址,
      // image.setAttribute("crossOrigin", "anonymous") // 这句可以解决跨域问题
      fetch(url).then(res => res.blob()).then(blob => { // 将链接地址字符内容转变成blob地址
        link.href = URL.createObjectURL(blob)
        console.log(link.href)
        link.download = ''
        document.body.appendChild(link)
        link.click()
      })
    })
  }
})

使用

<span v-down="item.path">下载</span>

结果

以上是关于vue-cli实现下载文件而不是打开文件的主要内容,如果未能解决你的问题,请参考以下文章

js window.open(url)为啥会自动下载文件,而不是打开文件?

Python 文件在浏览器窗口中打开,而不是下载提示

在浏览器中打开文件而不是下载它

下载文件实现的常见方式

如何在新选项卡或窗口中打开 PDF 文件而不是下载它(使用 asp.net)?

通知浏览器下载文件,而不是直接打开下载