Vue中下载不同文件的几种方式

2023-11-09

当在Vue中需要实现文件下载功能时,我们可以有多种方式来完成。下面将介绍五种常用的方法。

1. 使用window.open方法下载文件

<template>
  <div>
    <button @click="downloadFile('file1.pdf')">下载文件1</button>
    <button @click="downloadFile('file2.jpg')">下载文件2</button>
  </div>
</template>

<script>
export default {
  methods: {
    downloadFile(fileName) {
      const fileUrl = '/path/to/' + fileName; // 文件的URL地址
      window.open(fileUrl);
    }
  }
};
</script>

在上面的示例中,我们使用了window.open方法来打开一个新窗口,并直接访问文件的URL地址,从而触发文件下载。

2. 使用<a>标签进行文件下载

<template>
  <div>
    <button @click="downloadFile('file1.pdf')">下载文件1</button>
    <button @click="downloadFile('file2.jpg')">下载文件2</button>
  </div>
</template>

<script>
export default {
  methods: {
    downloadFile(fileName) {
      const fileUrl = '/path/to/' + fileName; // 文件的URL地址
      const link = document.createElement('a');
      link.href = fileUrl;
      link.setAttribute('download', fileName);
      link.click();
    }
  }
};
</script>

在上面的示例中,我们首先创建一个<a>标签,然后设置其href属性为文件的URL地址,download属性为要下载的文件名。最后,通过调用click()方法触发链接的点击事件,实现文件的下载。

3. 使用axios下载文件

<template>
  <div>
    <button @click="downloadFile('file1.pdf')">下载文件1</button>
    <button @click="downloadFile('file2.jpg')">下载文件2</button>
  </div>
</template>

<script>
import axios from 'axios';

export default {
  methods: {
    downloadFile(fileName) {
      const fileUrl = '/path/to/' + fileName; // 文件的URL地址
      axios.get(fileUrl, { responseType: 'blob' })
        .then(response => {
          const url = window.URL.createObjectURL(new Blob([response.data]));
          const link = document.createElement('a');
          link.href = url;
          link.setAttribute('download', fileName);
          document.body.appendChild(link);
          link.click();
        })
        .catch(error => {
          console.error(error);
        });
    }
  }
};
</script>

在上面的示例中,我们使用了axios发送GET请求,设置responseTypeblob以便获取文件的二进制数据。然后,通过创建临时URL、创建<a>标签并设置下载属性,实现文件的下载。

4. 使用Fetch API下载文件

<template>
  <div>
    <button @click="downloadFile('file1.pdf')">下载文件1</button>
    <button @click="downloadFile('file2.jpg')">下载文件2</button>
  </div>
</template>

<script>
export default {
  methods: {
    downloadFile(fileName) {
      const fileUrl = '/path/to/' + fileName; // 文件的URL地址
      fetch(fileUrl)
        .then(response => response.blob())
        .then(blob => {
          const url = window.URL.createObjectURL(blob);
          const link = document.createElement('a');
          link.href = url;
          link.setAttribute('download', fileName);
          document.body.appendChild(link);
          link.click();
        })
        .catch(error => {
          console.error(error);
        });
    }
  }
};
</script>

在上面的示例中,我们使用了Fetch API发送GET请求,并使用.blob()方法将返回的数据转换为blob对象。然后,通过创建临时URL、创建<a>标签并设置下载属性,实现文件的下载。

5. 使用Vue的$download方法下载文件

<template>
  <div>
    <button @click="downloadFile('file1.pdf')">下载文件1</button>
    <button @click="downloadFile('file2.jpg')">下载文件2</button>
  </div>
</template>

<script>
export default {
  methods: {
    downloadFile(fileName) {
      const fileUrl = '/path/to/' + fileName; // 文件的URL地址
      this.$download(fileUrl, fileName);
    }
  }
};
</script>

在这个示例中,我们直接调用Vue实例的$download方法,并传入文件的URL地址和下载的文件名,即可实现文件的下载。

6. 使用创建a标签方法下载文件

<template>
  <div>
    <button @click="downloadFile('file1.pdf')">下载文件1</button>
    <button @click="downloadFile('file2.jpg')">下载文件2</button>
  </div>
</template>

<script>
export default {
  methods: {
    downloadFile(fileName) {
      const folderPath = '/path/to/folder/'; // 文件所在的文件夹路径
      const fileUrl = folderPath + fileName; // 拼接文件夹路径和文件名
      const link = document.createElement('a');
      link.href = fileUrl;
      link.setAttribute('download', fileName);
      link.click();
    }
  }
};
</script>

在这个示例中,我们首先定义了文件所在的文件夹路径folderPath,然后通过拼接文件夹路径和文件名来构建完整的文件URL地址fileUrl。接着,我们创建一个<a>标签,并设置其href属性为文件URL,download属性为要下载的文件名。最后,通过调用click()方法触发链接的点击事件,实现文件的下载。

以上是六种常用的在Vue中实现文件下载的方式,请根据项目需求选择合适的方式来完成文件下载功能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue中下载不同文件的几种方式 的相关文章

随机推荐

  • 解析TCP之滑动窗口(动画演示)

    概述 滑动窗口实现了TCP流控制 首先明确滑动窗口的范畴 TCP是双工的协议 会话的双方都可以同时接收和发送数据 TCP会话的双方都各自维护一个发送窗口和一个接收窗口 各自的接收窗口大小取决于应用 系统 硬件的限制 TCP传输速率不能大于应
  • 【概率论与数理统计】猴博士 笔记 p29-32 均匀分布、泊松分布、指数分布、几何分布

    均匀分布U 题型 已知某随机变量满足某分布 求对应的概率 期望 方差 也是套公式 例1 设随机变量X U 2 5 求P X gt 4 EX DX 套公式得 p x 4
  • 解决Tomcat启动控制台输出中文信息乱码 [亲测好用]

    解决Tomcat启动控制台输出中文信息乱码 亲测好用 文章目录 解决Tomcat启动控制台输出中文信息乱码 亲测好用 一 问题描述 Tomcat启动控制台输出信息乱码解决 二 问题分析 Tomcat日志之所以出现中文乱码问题是因为日志输出的
  • 2012年蓝桥杯省赛-汉诺塔

    题目 题目链接 题解 题目本身很简单 但是我想提醒几点 会推导出结论 2 n 1 2 n 1 2n 1 特殊的输出方式 对于汉诺塔问题 存在递推公式
  • (Jquery功能篇) JPage分页控件实例代码

    截图 使用JPage实现分页效果图 第一步 加载JPage插件 相关资源文件和Js代码 截图所示 第二步 编写相关js 代码 function bindDate 删除相关数据 删除Id为edc的tbody的相关数据 移除Class为cont
  • 2020-10-17第十一届第二场蓝桥杯JavaB组

    第十一届第二场蓝桥杯JavaB组 题解 试题 B 寻找 2020 本题总分 5 分 问题描述 小蓝有一个数字矩阵 里面只包含数字 0 和 2 小蓝很喜欢 2020 他想找 到这个数字矩阵中有多少个 2020 小蓝只关注三种构成 2020 的
  • 合规性强的第三方收款工具受青睐 报告:连连国际使用频率排名第一

    经过多年发展 我国跨境电商已经完成第一轮草根式高增长 进入规模化出海阶段 这也进一步促使银行 跨境支付机构 跨境电商平台等不断优化升级产品方案 深化出海全链路服务生态 全力帮助外贸企业 中国品牌开辟出海新路径 实现新发展 在对跨境企业现状及
  • 《Stable Diffusion web UI-Segment Anything未完待续01》

    最近每天晚上都在弄手指修复 但是都不理想 索性放在后面再写教程 今天中午花时间弄了一下Segment Anything 1 下载Segment Anything 点击拓展 从网址安装 安装 已安装 点击重启 2 点击这个项目红色框里面的 h
  • 【机器学习实战】8、预测数值型数据:回归

    文章目录 8 1 用线性回归找到最佳拟合直线 8 1 1 线性回归 8 1 2数据可视化 8 1 3 求回归系数向量 并根据系数绘制回归曲线 8 2 局部加权线性回归 LWLR 8 3 预测鲍鱼年龄 8 4 岭回归 8 5 前向逐步回归 8
  • linux 模拟postman进行post提交

    curl H Content Type application json charset utf 8 H Data Type msg X POST data mobile 13366088888 name 哈哈 http 192 168 1
  • 使用Jtest 2022.2简化严格的Java测试

    阅读本文 您可以了解您的开发团队如何利用Parasoft Jtest 2022 2 中包含的先进功能和增强功能来简化 Java 测试 如果开发人员没有自动化测试流程 Java和JUnit测试对他们来说可能是耗时且具有挑战性的 随着Paras
  • 使用Python将TXT转为Excel

    第一步 我们创建一个txt文件 内容为图中所示 第二步 开始写代码 导入openpyxl用于excel操作 from openpyxl import Workbook 新建保存结果的excel sheet wb Workbook r res
  • 二、大数据实践项目——数据分析与处理

    一 数据处理主要任务 二 数据集处理 1 查看数据集基本情况 调用 info 函数来查看数据data的基本情况 包括数据维度 字段名称和类型以及有无缺失值 数据占用内存等 以下为部分字段信息 可见总的数据47447行 少于此数值的为有数据缺
  • 矩阵的1/2次方

    矩阵的1 2次方 求矩阵的1 2次方的前提是A为正定阵 这时A一定相似于主对角元素都为正数的对角阵 也就是说存在可逆阵P 使得 P 1 AP dia 1 2 n 是对角阵 取B Pdiag 1 2 n P 1 则B 2 A 即B A 1 2
  • 分析如何用万能表测试MOS管好坏的小窍门

    现在家电 照明 汽车电子等领域行业开关管均采用性能优异的MOS管取代过去的大功率晶体三极管 使整体的效率 可靠性 故障率均大幅的下降 虽说是大幅降低 但也会出现损坏的情况 由于MOS管和大功率晶体三极管在结构 特性有着本质上的区别 在应用上
  • Java堆内存是线程共享的吗

    转载声明 Java堆内存是线程共享的 面试官 你确定吗 Java作为一种面向对象的 跨平台语言 其对象 内存等一直是比较难的知识点 所以 即使是一个Java的初学者 也一定或多或少的对JVM有一些了解 可以说 关于JVM的相关知识 基本是每
  • 堆叠注入原理解析

    文章目录 一 堆叠注入原理 二 堆叠注入触发条件 三 题目 一 堆叠注入原理 mysql数据库sql语句的默认结束符是以 结尾 在执行多条SQL语句时就要使用结束符隔开 那么在 结束一条sql语句后继续构造下一条语句 是否会一起执行 因此这
  • Shell脚本调试技巧

    脚本调试的主要工作就是发现引发脚本错误的原因以及脚本源代码中定位错误行 归纳汇总了SHELL脚本的总总方法 供大家学习参考 方式一 通过echo方式 功能 最简单的调试方法 可以在任何怀疑出错的地方用echo打印变量 场合 所有怀疑可能有问
  • 华硕PRIME Z390-P主板设置开启虚拟化技术

    没开虚拟化技术virtual box只能创建32位的系统 开启之后才能创建windows 7 64位系统 参考文章 https shiyousan com post 636245851547291596 https jingyan baid
  • Vue中下载不同文件的几种方式

    当在Vue中需要实现文件下载功能时 我们可以有多种方式来完成 下面将介绍五种常用的方法 1 使用window open方法下载文件