admin管理员组

文章数量:1536103

如果是get请求的二进制文件,则后端处理文件时可以将文件配置为在浏览器中打开直接下载,所以前端要做的就是直接访问文件地址即可

注: download属性只有在同源的情况下才会生效( 项目部署地址和接口地址在一个服务器上 )

如果是post请求获取的二进制文件,则需要页面发送接口请求,将返回的二进制文件进行转换后下载

this.$http.post(url, {
	// 请求参数
}, { responseType: 'blob' }
).then(function(res) {
  // 将二进制流文件写入excel表,以下为重要步骤
  let blob = new Blob([res.data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8' })
  // application/vnd.openxmlformats-officedocument.spreadsheetml.sheet这里表示xlsx类型
  let a = document.createElement('a')
  let href = window.URL.createObjectURL(blob) // 创建下载的链接
  a.href = href
  a.download = '运营报告.xlsx' // 下载后文件名
  document.body.appendChild(a)
  a.click() // 点击下载
  document.body.removeChild(a) // 下载完成移除元素
  window.URL.revokeObjectURL(href) // 释放掉blob对象
})

本文标签: 下载图片文件js