首页 > 其他分享 >Vue3、Vue2、js通用下载不同文件的几种方式

Vue3、Vue2、js通用下载不同文件的几种方式

时间:2024-09-09 14:52:08浏览次数:7  
标签:文件 const URL js link Vue2 Vue3 fileName 下载

示例在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中实现文件下载的方式,请根据项目需求选择合适的方式来完成文件下载功能

 

 

 

 

 

 

 


 

 


 

 


 

 

 

标签:文件,const,URL,js,link,Vue2,Vue3,fileName,下载
From: https://blog.csdn.net/m0_74079648/article/details/142058968

相关文章

  • js实现滑动密码框
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=device-width,......
  • 在react中用three.js 渲染模型 在上面创建标签
    import{CSS2DRenderer,CSS2DObject}from'three/examples/jsm/renderers/CSS2DRenderer.js'//基本设置constscene=newTHREE.Scene();constcamera=newTHREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight,0.1,1000);camera.posi......
  • 推荐一个Python流式JSON处理模块:streaming-json-py
    每天,我们的设备、应用程序和服务都在生成大量的数据流,这些数据往往大多是以JSON格式存在的。如何高效地解析和处理这些JSON数据流是一大挑战。今天,我要为大家介绍一个能极大简化这一过程的利器:streaming-json-pystreaming-json-py介绍streaming-json-py是一个专为实时......
  • 在react中利用three.js 渲染模型 让鼠标拖拽是模型转动
    import{OrbitControls}from'three/examples/jsm/controls/OrbitControls';useEffect(()=>{//初始化OrbitControlsconstcontrols=newOrbitControls(camera,renderer.domElement);//设置控制参数controls.enableDamping=true;//平滑化运动c......
  • react 中three.js 模型渲染
      npminstallthreeimport*asTHREEfrom"three";import{GLTFLoader}from"three/examples/jsm/loaders/GLTFLoader.js";constmountRef=useRef(null);useEffect(()=>{//创建渲染器constrenderer=newTHREE.WebGLRender......
  • 在react 中还有另外一种three.js 渲染方式
    npminstall@react-three/drei利用标签去渲染模型importReact,{useRef,useEffect,useState}from'react';import{Canvas,useFrame,useThree,useLoader}from'@react-three/fiber';import{GLTFLoader}from'three/examples/jsm/loaders/GLT......
  • Vue3学习汇总(路由篇)
    1.单一页面设计常用存在导航栏和内容区,导航栏路由分配,内容区呈现组件内容;<template><divclass="app"><h2class="title">vue路由测试</h2><!--导航区--><divclass="navigate"><RouterLinkto="/h......
  • 组态软件之万维组态介绍(web组态、html组态、vue2/vue3组态、组态软件、组态编辑器)
     一、什么是组态软件组态软件是一种用于创建、配置和管理监控和控制系统的软件工具。组态是指不需要编写计算机程序、通过配置的方式完成工业应用开发的系统。它们通常用于工业自动化领域,用于实时监视和控制工业过程。组态软件提供了丰富的功能和工具,使用户能够创建用户界......
  • vue2+elementUI+Django实现登录注册功能
     前端代码<template><el-rowtype="flex"justify="center"style="height:100vh;"><el-col:xs="24":sm="12":md="8":lg="6"><el-cardclass="login-card......
  • json.dumps(data.__dict__) 会把中文字符转义为 Unicode 码点
    在Python中,json.dumps()函数会将Python对象序列化为JSON字符串,并默认使用UTF-8编码来处理非ASCII字符。虽然在Python3中,字符串是默认以Unicode形式存储的,但是当json.dumps()将Python字符串转换为JSON格式时,非ASCII字符会自动被转义为Unicode码点(例如\u......