• 前端下载文件


    下载文件最简单的方式,就是后端提供一个下载地址。前端只需要a链接绑定这个下载地址即可

    下载

    download也可以等于一个值,这个值就是文件名

    但是如果后端传给我们的是一个文本或者字节流,则就需要我们用Blob对象再进行一下处理,把后端给的二进制或者文本数据利用Blob对象生成一个下载地址,然后创建a链接,自动触发a链接进行下载

    下载json文件

    1. <script setup lang="ts">
    2. import { reactive } from 'vue'
    3. // 假装这是后端返回的文件内容
    4. const obj = reactive({
    5. name: 'zs',
    6. age: 25,
    7. gender: 1
    8. })
    9. const downFile = () => {
    10. const blob = new Blob([JSON.stringify(obj)], { type: 'application/json' })
    11. // console.log(blob) // Blob {size: 33, type: 'application/json'}
    12. // 创建一个指向类型化数组的 URL 其实就是把上面的blob数据转换为了一个可以下载的url地址
    13. let href = window.URL.createObjectURL(blob)
    14. // 下载地址既然有了,那就可以生成一个a标签,直接自动点击下,就可以下载了
    15. const a = document.createElement('a')
    16. a.href = href // a链接的下载地址
    17. a.setAttribute('download', 'data.json') // 把a标签设置为下载,并为文件取名
    18. document.body.appendChild(a) // 把a链接插入到结构中
    19. a.click() // 自动点击触发下载
    20. // 下载完成后,记得移除a标签和释放生成的下载链接
    21. document.body.removeChild(a)
    22. window.URL.revokeObjectURL(href)
    23. }
    24. script>

    下载zip文件

    1. <script setup lang="ts">
    2. import axios from 'axios'
    3. const downZipFile = () => {
    4. // 请求zip文件数据 记得一定要给axios请求指定为blob
    5. axios.get('后端给的地址', { responseType: 'blob' }).then((res: any) => {
    6. // console.log(res)
    7. // Blob 对象表示一个不可变、原始数据的类文件对象。它的数据可以按文本或二进制的格式进行读取
    8. const blob = new Blob([res], { type: 'application/zip' })
    9. // console.log(blob)
    10. // 创建一个指向类型化数组的 URL 其实就是把上面的blob数据转换为了一个可以下载的url地址
    11. let href = window.URL.createObjectURL(blob)
    12. // 下载地址既然有了,那就可以生成一个a标签,直接自动点击下,就可以下载了
    13. const a = document.createElement('a')
    14. a.href = href // a链接的下载地址
    15. // a.setAttribute('download', 'data.zip') // 把a标签设置为下载,并为文件取名
    16. document.body.appendChild(a) // 把a链接插入到结构中
    17. a.click() // 自动点击触发下载
    18. // 下载完成后,记得移除a标签和释放生成的下载链接
    19. document.body.removeChild(a)
    20. window.URL.revokeObjectURL(href)
    21. })
    22. }
    23. script>

    下载其他文件(例如.doc,.xls,.ppt,.tar...)也是同理的,只需要改下Blob里对应的type

    下面是office文件所对应的的 Content-type 类型 Content-type 类型总结

    office文件所对应的的 Content-type类型Content-type类型总结 - 简书 (jianshu.com)

  • 相关阅读:
    List<T>集合转Map<String, List<T>>
    SAP UI5 SmartTable 控件本地运行时进行 Excel 导出的单步调试
    Kubernetes与Docker和Containerd是个什么关系
    java:逆序排序的三种方法
    基于Matlab实现多个图像增强案例(附上源码+数据集)
    数据结构——排序算法(C语言)
    linux基础知识学习
    SpringBoot后端初始框架搭建——基于SpringBoot和Vue的后台管理系统项目系列博客(四)
    rocketmq-console-1.0.0启动报错
    【HTML+CSS+JS】模仿QQ登录界面
  • 原文地址:https://blog.csdn.net/qq_52845451/article/details/134051512