当前位置: 首页 > wzjs >正文

phpcms手机网站怎么做网站建设 可行性

phpcms手机网站怎么做,网站建设 可行性,网站推广网络营销,网站开发谢辞Vue中实现大文件的切片下载 切片下载需要后端提供两个接口,第一个接口用来获取当前下载文件的总切片数,第二个接口用来获取具体某一个切片的内容。 界面展示 数据流展示 代码 接口 // 切片下载-获取文件的总切片数 export function getChunkDownload…

Vue中实现大文件的切片下载

切片下载需要后端提供两个接口,第一个接口用来获取当前下载文件的总切片数,第二个接口用来获取具体某一个切片的内容。

界面展示

在这里插入图片描述

数据流展示

在这里插入图片描述

代码

接口

// 切片下载-获取文件的总切片数
export function getChunkDownloadMetaInfo(queryParams) {return request({url: `/resource/chunkDownloadMetaInfoByUrl`,method: 'get',params: queryParams})
}// 切片下载-获取当前切片的文件内容
export function getChunkDownload(queryParams) {return request({url: `/resource/chunkDownloadByUrl`,method: 'get',headers: {'Content-Type': 'application/json; application/octet-stream'},responseType: 'blob', //响应数据格式配置params: queryParams})
}

下载

// 下载
const downloadItem = async item => {const fileName = item.fileNameconst fileUrl = item.fileUrlif (item.isDownloading) {ElMessage({type: 'error',message: `${fileName}正在下载中请稍等`})return}item.progress = 0 // 下载进度item.isDownloading = true // 是否正在下载item.isAborted = false // 是否中止下载try {// 获取文件信息const fileInfo = await getFileInfo(fileUrl)const totalChunks = fileInfo.totalChunkNum// 并发下载所有切片const downloadedChunks = await downloadWithConcurrency(fileUrl, fileName, totalChunks, item)// 合并并下载文件const mergedBlob = mergeBlobs(downloadedChunks)triggerDownload(mergedBlob, fileName)} catch (error) {console.error('下载失败:', error)ElMessage({type: 'error',message: `${fileName}文件下载失败`})} finally {item.isDownloading = false}
}
// 获取文件信息
const getFileInfo = async fileUrl => {try {const response = await getChunkDownloadMetaInfo({ url: fileUrl })return response.data} catch (error) {throw new Error(`获取文件信息失败: ${error.message}`)}
}
// 下载单个切片
const downloadChunk = async (fileUrl, fileName, chunkIndex) => {try {const response = await getChunkDownload({url: fileUrl,chunkNumber: chunkIndex})return response} catch (error) {throw new Error(`下载切片失败: ${error.message}`)}
}
// 合并 Blob
const mergeBlobs = blobs => {return new Blob(blobs)
}
// 触发文件下载
const triggerDownload = (blob, fileName) => {const url = URL.createObjectURL(blob)const a = document.createElement('a')a.href = urla.download = fileNamea.click()URL.revokeObjectURL(url)
}
// 并发下载
const downloadWithConcurrency = async (fileUrl, fileName, totalChunks, item) => {const downloadedChunks = new Array(totalChunks).fill(null)let completedChunks = 0const downloadNextChunk = async chunkIndex => {if (item.isAborted) return // 如果已中止,直接返回try {const chunk = await downloadChunk(fileUrl, fileName, chunkIndex)console.log(chunk, '123123123123123123')downloadedChunks[chunkIndex] = chunk// 更新下载进度completedChunks++item.progress = Math.round((completedChunks / totalChunks) * 100)} catch (error) {item.isAborted = true // 中止下载throw error}}// 启动并发下载const workers = []for (let i = 0; i < totalChunks; i++) {if (item.isAborted) break // 如果已中止,停止启动新任务if (workers.length >= maxConcurrency) {// 等待一个任务完成后再启动新任务await Promise.race(workers)}const worker = downloadNextChunk(i).finally(() => {workers.splice(workers.indexOf(worker), 1)})workers.push(worker)}await Promise.all(workers) // 等待所有任务完成return downloadedChunks
}
http://www.dtcms.com/wzjs/789500.html

相关文章:

  • 贸易网站开发怎么做网站内容
  • 南通网站建设方案开发做视频网站应该选什么服务器
  • 哈尔滨 网站建设关键词与网站标题
  • 电子商务网站seo当地建设厅网站
  • 长沙哪个网站建设最好工信部网站 地址
  • asp网站建设下载望野杜甫
  • 有没有类似一起做网店的网站优秀的app界面设计案例
  • 安徽元鼎建设工程有限责任公司网站网页制作素材及流程
  • 做网站是通过怎么挣钱北京网站快速排名优化
  • 网站估值怎么做网站建设和网络推广外包
  • 怎么做淘宝网站推广百度爱采购怎么优化排名
  • 建网站电话衡水网站托管
  • 请问有重庆有做网站吗宁波网站开发建设公司
  • 网站云解析域名解析建设网站的情况说明
  • 怎么找做网站的外包公司如何用群晖做自己的网站
  • 米枫网站怎么做分页福安市网站建设
  • php 网站开发案例教程2022年适合小学生的新闻
  • 个人网站如果做展馆展厅设计报价
  • 制作网站要多少费用青岛谷歌优化
  • 市级档案网站建设情况分析推广营销策略
  • 如何让做的网站自动适应浏览器青岛网站优化排名
  • 图片在线设计网站网页制作教程好看视频
  • 天津葛沽 网站建设公司昆明君创网络科技有限公司
  • 办公室设计效果图大全苏州优化网站
  • 青岛专业建设网站wordpress教育网站
  • 门户网站 开发注意鞋帽网站欣赏
  • 怎么提高网站曝光公司的网 网站打不开
  • js实现网站简体转繁体中英文网站为什么要分开做
  • 四川平台网站建设方案蚌埠网络推广
  • 网站开发教程图文angular2做的网站有