技术文摘
Vue 与 Element-plus 实现文件上传和下载进度显示的方法
在现代Web应用开发中,文件上传和下载功能是常见需求,而向用户展示操作进度能极大提升用户体验。Vue与Element-plus的组合为实现这一功能提供了便捷途径。
来看文件上传进度显示。在Vue项目中使用Element-plus的上传组件
<el-upload
class="upload-demo"
action="your-upload-url"
:on-progress="handleUploadProgress"
:before-upload="beforeUpload">
<el-button size="small" type="primary">点击上传</el-button>
</el-upload>
export default {
data() {
return {
uploadProgress: 0
}
},
methods: {
handleUploadProgress(event) {
this.uploadProgress = event.percentage;
},
beforeUpload(file) {
// 文件格式等预处理
return true;
}
}
}
在模板中,我们可以通过一个进度条组件,如
<el-progress :percentage="uploadProgress"></el-progress>
接下来是文件下载进度显示。这相对复杂一些,我们可以借助XMLHttpRequest对象来实现。创建一个自定义的下载函数,在函数内部创建XMLHttpRequest实例,监听它的progress事件获取下载进度。
downloadFile() {
const xhr = new XMLHttpRequest();
xhr.open('GET', 'your-download-url', true);
xhr.responseType = 'blob';
xhr.onprogress = (event) => {
if (event.lengthComputable) {
const percentComplete = (event.loaded / event.total) * 100;
this.downloadProgress = percentComplete;
}
};
xhr.onload = () => {
if (xhr.status === 200) {
const blob = xhr.response;
const url = window.URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'your-file-name';
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
}
};
xhr.send();
}
同样,在模板中用
TAGS: Vue Element-Plus 文件上传 下载进度显示
- DockStation 是否是您期待的 Docker GUI ?
- 元宇宙:黑科技还是骗局?为您解读
- Python 网络爬虫实现邮件定时发送:手把手教程及源码
- 穿越 1994 年,揭开 80%网站采用 PHP 的奥秘
- 鸿蒙系统中的桃夭权限请求框架实现
- Webpack 性能之分包优化
- 学校 APP 难用 码农爸妈自制开源程序 官方竟要报警
- 你真的了解神器 Logging 吗?
- 基于 Scrapy 框架的微博评论爬虫实操
- 解读 InnoDB 之 Undolog 的庖丁之术
- EasyC++中Const与指针
- 学会在 C# 中以 Redis list 作队列使用
- 10 月 GitHub 热门 Python 开源项目排名
- 分发饼干怎可贪心
- AI 与 AR 在工作场所的发展