Vue不能下载xls以及文件乱码问题解决

 更新时间:2022年04月18日 15:39:55   作者:Shang  
最近工作中遇到了一些问题,通过查找相关资料终于找到了相关的解决方法,这篇文章主要给大家介绍了关于Vue不能下载xls以及文件乱码问题解决的相关资料,需要的朋友可以参考下

发现问题

老大要让我实现下载xls文件的功能,我想了想:我好像不太会耶!

但是我们之前写的一个页面有一个下载xls的功能,那我就CV大法,嘿嘿嘿。

当我点击下载按钮的那一刻,控制台红了...,心想MMP

一样的代码不行,那个就能下载,我CV后变质了?

报错原因:TypeError: Failed to execute 'createObjectURL' on 'URL': Overload resolution failed.

我看了看网络请求,老大说传过来的数据没问题,可能是数据太大?

我看了好多好多好多好多博客,他们解决方案是对传过来的数据进行Blob处理后,那咱们试一试吧!

let blob = new Blob([res], {type: 'application/vnd.ms-excel'})
const url = window.URL.createObjectURL(res)

唉?可以下载了!但是表格内的数据都是乱码......

我这一想不行呀!都来看到某位掘友的博客,他的做法是在请求头加responseType: 'blob'

最终我成功的解决了这个问题,呜呜呜...

总结

在做大数据文件下载时,在请求头中加入 responseType: 'blob',就可以解决下载和文件内乱码的问题了。

下面附上代码

// 文件下载 ——  <a> 标签方法下载
download(row.logUserId).then(res => {
  if (!res) {return}
	
  // 这里的blob处理可做可不做,我试了下,不做blob也可以下载且不乱码
  let blob = new Blob([res], {type: 'application/vnd.ms-excel'})

  const url = window.URL.createObjectURL(blob)
  const link = document.createElement('a')

  link.style.display = 'none'
  link.href = url

  // download 属性定义了下载链接的地址而不是跳转路径
  link.setAttribute('download', row.reportExcelLog.fileName+'.xls')
  document.body.appendChild(link)

  link.click()

  window.URL.revokeObjectURL(link.href) //释放url
  document.body.removeChild(link)//释放标签
})
// 请求
export function download(logUserId) {
  return request({
    url: prefix + '/download/by/log/user/id',
    method: 'post',
    data: {
      logUserId
    },
    // 这一步至关重要
    responseType: 'blob'
  })
}

到此这篇关于Vue不能下载xls以及文件乱码问题解决的文章就介绍到这了,更多相关Vue下载xls及文件乱码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue中如何使用Map键值对传参详析

    Vue中如何使用Map键值对传参详析

    最近在做一个vue的项目,碰到一点关于Map键值对传参的问题,下面这篇文章主要给大家介绍了关于Vue中如何使用Map键值对传参的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • vue spa应用中的路由缓存问题与解决方案

    vue spa应用中的路由缓存问题与解决方案

    这篇文章主要介绍了vue spa应用中的路由缓存问题与解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • Vue.js组件tree实现无限级树形菜单

    Vue.js组件tree实现无限级树形菜单

    这篇文章主要为大家详细介绍了Vue.js组件tree实现无限级树形菜单代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • Vue打包优化之生产环境删除console日志配置

    Vue打包优化之生产环境删除console日志配置

    这篇文章主要为大家介绍了Vue打包优化之生产环境删除console日志配置详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • 浅入深出Vue之自动化路由

    浅入深出Vue之自动化路由

    这篇文章主要介绍了浅入深出Vue之自动化路由,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Vue项目中v-model和sync的区别及使用场景分析

    Vue项目中v-model和sync的区别及使用场景分析

    在Vue项目中,v-model和.sync是实现父子组件双向绑定的两种方式,v-model主要用于表单元素和子组件的双向绑定,通过modelValue和update:modelValue实现,.sync修饰符则用于同步prop值,适合在子组件内更新父组件prop值的场景,通过update:propName事件实现
    2024-11-11
  • vue中安装使用cesium方式(亲测可用)

    vue中安装使用cesium方式(亲测可用)

    这篇文章主要介绍了vue中安装使用cesium方式(亲测可用),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • vue中关于$emit和$on的使用及说明

    vue中关于$emit和$on的使用及说明

    这篇文章主要介绍了vue中关于$emit和$on的使用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • vue2 前端搜索实现示例

    vue2 前端搜索实现示例

    本篇文章主要介绍了vue2 前端搜索实现示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • vue页面使用多个定时器的方法

    vue页面使用多个定时器的方法

    这篇文章主要为大家详细介绍了vue页面使用多个定时器的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-09-09

最新评论