axios 实现上传、下载

news/2024/10/19 6:15:57/

 一、下载(支持批量下载)

  const downloadFile = (fileList) => {console.log(fileList, '下载list')fileList.forEach((e) => {const uid = uuidv4()const CancelToken = axios.CancelTokenlet source = CancelToken.source()transmissionStore().setDownloadSource('add', {workId: uid,axiosSource: source,})axios({url: `/xxxxxxxxx`,method: 'get',params: {id: uid,filePath: e.filePath,isDir: e.isDir,},responseType: 'blob',headers: {'Content-Type': 'application/json; charset=utf-8',workId: uid,},cancelToken: source.token,onDownloadProgress: function (progressEvent) {downloadLodashdebounce(uid, progressEvent) //节流推送if (progressEvent.total == progressEvent.loaded) {setTimeout(() => {transmissionStore().setDownloadSource('delete', {workId: uid,})}, 1000)}},}).then((res) => {const blob = new Blob([res.data], {type: 'application/octet-stream',})const url = window.URL.createObjectURL(blob)const a = document.createElement('a')a.href = urla.download = e.isDir ? `${e.fileName}.zip` : e.fileNamedocument.body.appendChild(a)a.click()document.body.removeChild(a)window.URL.revokeObjectURL(url)}).catch((error) => {console.log(error, '下载接口中断')})})proxy.$message({message: '已添加至传输列表',type: 'success',})}// 中断接口下载
source.cancel(`取消下载`)

二、上传(支持批量上传)

  const uploadFile = (e, is_file) => {const path = info.filePathList.join('/')const pathValue = path ? `${userData.value.username}/` + path : ''let file_lists = Object.values(e.target.files)console.log(file_lists, '上传list')if (file_lists.length > 0 && file_lists.length <= 30) {file_lists.forEach((item) => {const uid = uuidv4()const formData = new FormData()formData.append('fileName', item.name)formData.append('file', item)formData.append('filePath', pathValue)if (!is_file) {let folderName = item.webkitRelativePath.split('/')folderName.pop()formData.append('dirName', folderName.join('/'))}const CancelToken = axios.CancelTokenlet source = CancelToken.source()transmissionStore().setUploadSource('add', {workId: uid,axiosSource: source,})axios({url: `/xxxxx/upload`,method: 'post',data: formData,headers: {workId: uid,},cancelToken: source.token,onUploadProgress: function (progressEvent) {lodashdebounce(uid, progressEvent, formData) //节流推送if (progressEvent.total == progressEvent.loaded) {setTimeout(() => {transmissionStore().setUploadSource('delete', {workId: uid,})}, 1000)}},}).then((res) => {}).catch((error) => {console.log(error, '上传接口中断')transmissionStore().setOperationObj({type: 'filecancel',data: {id: uid,fileName: formData.get('fileName'),},})})})nextTick(() => {file_ref.value.value = nullfolder_ref.value.value = null})proxy.$message({message: '已添加至传输列表',type: 'success',})} else {proxy.$message({message: '文件数量超过限制,最多可上传30个。',type: 'warning',})nextTick(() => {file_ref.value.value = nullfolder_ref.value.value = null})}}// 中断接口上传
source.cancel(`取消上传`)


http://www.ppmy.cn/news/1436514.html

相关文章

爬虫抓取网站数据

Fiddler 配置fiddler工具结合浏览器插件 配置fiddler Tools--Options 抓包技巧 谷歌浏览器开启无痕浏览,使用SwitchyOmega配置好代理端口 Ctrl x 清理所有请求记录,可以删除指定不需要日志方便观察 设置按请求顺序 观察cookie,观察请求hesder cookie和row返回结果 Swit…

上海计算机学会2021年3月月赛C++丙组T1疫苗接种

题目描述 小爱前去接种疫苗&#xff0c;注射完第一剂后&#xff0c;医生告诉她过 14 天后再来注射第二剂。给定接种第一剂疫苗的日期&#xff08;以年-月-日表示&#xff09;&#xff0c;请输出注射第二剂的日期。 输入格式 若干字符&#xff1a;表示接种第一剂疫苗的日期。…

面试经典150题——路径总和

​ 1. 题目描述 2. 题目分析与解析 2.1 思路一 注意题目的关键点&#xff1a;判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;起点是root&#xff0c;终点是叶子节点。 那么我们就可以从根节点按照层序遍历的方式&#xff0c;从根节点从根到 叶子不断对路径进行加…

Docker实战十一之Redis部署

Docker实战十一之Redis部署 简介 前面我们介绍了如何使用Docker 安装软件的一些简单方法。但在生产环境中&#xff0c;我们往往有更高的要求&#xff0c;需要保证系统的高可靠性和稳定性&#xff0c;以及数据的持久化&#xff0c;比如&#xff1a; 我们使用Docker 安装 Redis 并…

【A-025】基于SSH的房屋中介管理系统(含论文)

【A-025】基于SSH的房屋中介管理系统&#xff08;含论文&#xff09; 开发环境&#xff1a; Jdk7(8)Tomcat7(8)MySQLIntelliJ IDEA(Eclipse) 数据库&#xff1a; MySQL 技术&#xff1a; SpringStruts2HiberanteJquery 适用于&#xff1a; 课程设计&#xff0c;毕业设计&am…

python之schedule

在Python中&#xff0c;可以使用schedule模块来执行定时任务。这个模块提供了简单易用的API&#xff0c;可以让你按照指定的时间间隔或特定时间点执行函数或任务。 首先&#xff0c;需要使用pip安装schedule模块&#xff1a; pip install schedule下面是一个简单的例子&#…

JavaScript:js实现在线五子棋人机(人人)对弈

在线五子棋人机对弈 全部使用前端技术,使用HTML,CSS以及JS进行实现. 棋盘在后端就是一个15*15的二维数组 页面设计 页面设计的比较粗糙 主要使用js自带的canvas画布进行绘画 HTML代码如下: <div class"outer"><canvas id"canvas" height&qu…

《异常检测——从经典算法到深度学习》27 可执行且可解释的在线服务系统中重复故障定位方法

《异常检测——从经典算法到深度学习》 0 概论1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法3 基于One-Class SVM的异常检测算法4 基于高斯概率密度异常检测算法5 Opprentice——异常检测经典算法最终篇6 基于重构概率的 VAE 异常检测7 基于条件VAE异常检测8 Donut: …