Varias formas de descargar diferentes archivos en Vue

Cuando necesitamos implementar la función de descarga de archivos en Vue, podemos hacerlo de varias maneras. A continuación se presentarán cinco métodos comúnmente utilizados.

1. window.openCómo descargar archivos

<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>

En el ejemplo anterior, utilizamos window.openun método para abrir una nueva ventana y acceder directamente a la dirección URL del archivo, activando así la descarga del archivo.

2. Utilice <a>etiquetas para descargas de archivos

<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>

En el ejemplo anterior, primero creamos una <a>etiqueta y luego configuramos sus hrefpropiedades en la dirección URL del archivo y downloadla propiedad en el nombre del archivo que se descargará. Finalmente, el evento de clic del enlace se activa llamando click()al método para descargar el archivo.

3. Descargar archivos usando 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>

En el ejemplo anterior, usamos axios para enviar una solicitud GET, configurada responseTypepara blobobtener los datos binarios del archivo. <a>Luego, descargue el archivo creando una URL temporal, creando una etiqueta y configurando las propiedades de descarga.

4. Descargue archivos usando 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>

En el ejemplo anterior, utilizamos la API Fetch para enviar una solicitud GET y utilizamos .blob()métodos para convertir los datos devueltos en un objeto blob. <a>Luego, descargue el archivo creando una URL temporal, creando una etiqueta y configurando las propiedades de descarga.

5. Utilice el método $download de Vue para descargar archivos

<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>

En este ejemplo, llamamos directamente $downloadal método de la instancia de Vue y pasamos la dirección URL del archivo y el nombre del archivo descargado para descargar el archivo.

6. Descargue archivos usando el método de crear una etiqueta.

<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>

En este ejemplo, primero definimos la ruta de la carpeta donde se encuentra el archivo folderPathy luego construimos una dirección URL completa del archivo concatenando la ruta de la carpeta y el nombre del archivo fileUrl. A continuación, creamos una <a>etiqueta y establecemos su hrefatributo en la URL del archivo y downloadel atributo en el nombre del archivo que se descargará. Finalmente, el evento de clic del enlace se activa llamando click()al método para descargar el archivo.

Las anteriores son seis formas de uso común para implementar la descarga de archivos en Vue. Elija el método apropiado para completar la función de descarga de archivos de acuerdo con los requisitos del proyecto.

Supongo que te gusta

Origin blog.csdn.net/qq_54123885/article/details/132141698
Recomendado
Clasificación