vue下载不同文件的几种方式
当在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请求,设置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>在这个示例中,我们直接调用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中实现文件下载的方式,请根据项目需求选择合适的方式来完成文件下载功能。
这些仅为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论