vue项目下载文件重命名监测进度demo
摘要
当后台返回一个文件地址给前端,需要前端下载并重命名,展示下载进度。
使用技术:ajax、blob、vue插件file-saver
插件
我们不做过多解释,我们这里只是使用,这是插件教程地址:http://vuejscomponent.com/pac...
项目代码
import FileSaver from 'file-saver' // URL:文件存放地址,fileName:保存文件名称,downloadType:保存文件格式 const singleFileDownload = (url, fileName, downloadType) => { return new Promise((resolve, reject) => { if (!url || !fileName) { reject('文件不存在') return } var xhr = new XMLHttpRequest() xhr.open('GET', url, true) xhr.responseType = 'blob' // 当请求被发送到服务器时,我们需要执行一些基于响应的任务。 // 每当 readyState 改变时,就会触发 onreadystatechange 事件。 // onreadystatechange存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。 // readyState // 存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。 // 0: 请求未初始化 // 1: 服务器连接已建立 // 2: 请求已接收 // 3: 请求处理中 // 4: 请求已完成,且响应已就绪 // 用true时,表示发送异步请求,请规定在响应处于 onreadystatechange 事件中的就绪状态时执行的函数: xhr.onreadystatechange = () => { if (xhr.readyState === 4) { if (xhr.status === 200 || xhr.status === 0) { let file = null if (downloadType === 'pdf') { file = new Blob([xhr.response], { type: "application/pdf" }); } else { file = new Blob([xhr.response], { type: "application/zip" }); } FileSaver.saveAs(file, fileName) resolve('下载成功') } else { reject(new Error(fileName + '下载失败'), null) } } } xhr.addEventListener('progress', (e) => { // e.total就是文件的总字节 e.loaded就是文件已加载了多少字节了 // downloadFile.progress = (e.loaded * 1.0 / e.total * 100).toFixed(2) + '%' // downloadFile.progress = (e.loaded / (1024 * 1024)).toFixed(2) + 'M/' + (e.total / (1024 * 1024)).toFixed(2) + 'M' }) xhr.send() }) }
以上就是vue项目下载文件重命名监测进度demo的详细内容,更多关于vue文件下载进度检测的资料请关注脚本之家其它相关文章!
相关文章
vue出现Uncaught SyntaxError:Unexpected token问题及解决
这篇文章主要介绍了vue出现Uncaught SyntaxError:Unexpected token问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-04-04element vue Array数组和Map对象的添加与删除操作
这篇文章主要介绍了element vue Array数组和Map对象的添加与删除功能,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下2018-11-11vue手机端input change时,无法执行的问题及解决
这篇文章主要介绍了vue手机端input change时,无法执行的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-05-05vue后端传文件流转化成blob对象,前端点击下载返回undefined问题
这篇文章主要介绍了vue后端传文件流转化成blob对象,前端点击下载返回undefined问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-12-12详解从零搭建 vue2 vue-router2 webpack3 工程
本篇文章主要介绍了详解从零搭建 vue2 vue-router2 webpack3 工程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-11-11在Vue项目中用fullcalendar制作日程表的示例代码
这篇文章主要介绍了在Vue项目中用fullcalendar制作日程表,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-08-08
最新评论