Vue でさまざまなファイルをダウンロードするいくつかの方法

Vue でファイルのダウンロード機能を実装する必要がある場合、さまざまな方法で実装できます。よく使われる5つの方法を以下に紹介します。

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 リクエストを送信し、ファイルのバイナリ データを取得するresponseTypeように設定しました。blob次に、一時 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>

$downloadこの例では、 Vue インスタンスのメソッドを直接呼び出し、ファイルの URL アドレスとダウンロードされたファイル名を渡してファイルをダウンロードします。

6. タグ作成メソッドを使用してファイルをダウンロードする

<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 でファイルのダウンロードを実装するために一般的に使用される 6 つの方法です。プロジェクトの要件に応じて、適切な方法を選択してファイルのダウンロード機能を完了してください。

おすすめ

転載: blog.csdn.net/qq_54123885/article/details/132141698