文件下载有多种方式可以实现。下面是其中几种常见的方式:
1.使用<a>
标签的download
属性
<template><a :href="fileUrl" download>点击下载文件</a>
</template><script>
export default {data() {return {fileUrl: 'http://example.com/file.pdf'};}
};
</script>
2. 使用window.open()
方法
这种方式会在新窗口中打开文件,并触发浏览器的下载行为。
<template><button @click="downloadFile">点击下载文件</button>
</template><script>
export default {methods: {downloadFile() {window.open(this.fileUrl, '_blank');}},data() {return {fileUrl: 'http://example.com/file.pdf'};}
};
</script>
3. 使用XMLHttpRequest
对象
这种方式会通过 AJAX 请求获取文件内容,并将其转换为 Blob 对象,然后创建一个临时的 URL,并通过创建一个 <a>
标签来触发下载。
<template><button @click="downloadFile">点击下载文件</button>
</template><script>
export default {methods: {downloadFile() {const xhr = new XMLHttpRequest();xhr.open('GET', this.fileUrl, true);xhr.responseType = 'blob';xhr.onload = () => {if (xhr.status === 200) {const url = window.URL.createObjectURL(xhr.response);const link = document.createElement('a');link.href = url;link.download = 'file.pdf';link.click();window.URL.revokeObjectURL(url);}};xhr.send();}},data() {return {fileUrl: 'http://example.com/file.pdf'};}
};
</script>
4.使用 js-file-download
插件
// 先安装插件npm install js-file-download --save
// 借助你的axios请求完成下载<template><button @click="downloadFile">点击下载文件</button>
</template><script>
import axios from 'axios';
import fileDownload from 'js-file-download';export default {methods: {downloadFile() {const fileUrl = 'http://example.com/file.pdf';axios.get(fileUrl, { responseType: 'blob' }).then(response => {fileDownload(response.data, 'file.pdf');});}}
};
</script>
5. 使用 file-saver
插件
// 安装插件npm install file-saver --save
<template><button @click="downloadFile">点击下载文件</button>
</template><script>
import { saveAs } from 'file-saver';export default {methods: {downloadFile() {const fileUrl = 'http://example.com/file.pdf';fetch(fileUrl).then(response => response.blob()).then(blob => {saveAs(blob, 'file.pdf');});}}
};
</script>