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

局域网网站制作教程/考证培训机构报名网站

局域网网站制作教程,考证培训机构报名网站,石家庄有做网站的公司吗,新疆网络科技有限公司好的!下面是一篇结合 Element Plus 的 Vue 3 大文件切片上传 断点续传完整实战教程,UI 用的是 Element Plus,结构清晰,语气亲和,适合你直接复制使用。 整理不易,如果本文对你有帮助,欢迎点个【…

好的!下面是一篇结合 Element Plus 的 Vue 3 大文件切片上传 + 断点续传完整实战教程,UI 用的是 Element Plus,结构清晰,语气亲和,适合你直接复制使用。


整理不易,如果本文对你有帮助,欢迎点个【赞 👍】+【收藏 ⭐】+【关注 🧡】

📦 Vue + Element Plus 实战:大文件切片上传 + 断点续传

今天我们来用 Vue 3 + Element Plus,实战开发一个“支持大文件切片上传、断点续传”的文件上传组件,适合上传视频、压缩包、设计图等大文件场景,带完整前端逻辑和 UI 演示👇


🧩一、功能亮点

✅ 文件切片(Blob 分片)
✅ 并发上传,支持进度条
✅ 秒传校验(文件 hash)
✅ 断点续传(跳过已上传)
✅ 合并通知(服务端拼接)


✨二、最终效果图

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
(上传进度 + 支持断点续传)


🛠️三、完整前端实现(Element Plus 版本)

1️⃣ 安装依赖

npm install element-plus spark-md5

2️⃣ 组件模板(UploadChunk.vue)

<template><el-card><el-upload:show-file-list="false":before-upload="handleBeforeUpload":http-request="handleUpload"dragaccept="*"><i class="el-icon-upload" /><div class="el-upload__text">将文件拖到此处,或 <em>点击上传</em></div></el-upload><el-progressv-if="uploadProgress > 0":percentage="uploadProgress"status="success"style="margin-top: 20px"/></el-card>
</template>

3️⃣ 脚本逻辑(切片、上传、断点续传)

<script setup>
import { ref } from 'vue'
import SparkMD5 from 'spark-md5'
import { ElMessage } from 'element-plus'const uploadProgress = ref(0)
const CHUNK_SIZE = 2 * 1024 * 1024 // 2MBlet file = null
let fileHash = ''
let fileChunks = []// 1. 预处理文件
const handleBeforeUpload = async (rawFile) => {file = rawFilefileChunks = createChunks(file)fileHash = await calculateHash(fileChunks)return false // 阻止默认上传
}// 2. 分片
const createChunks = (file) => {const chunks = []let cur = 0while (cur < file.size) {chunks.push(file.slice(cur, cur + CHUNK_SIZE))cur += CHUNK_SIZE}return chunks
}// 3. 计算 hash
const calculateHash = (chunks) => {return new Promise((resolve) => {const spark = new SparkMD5.ArrayBuffer()let count = 0const reader = new FileReader()const loadNext = () => {if (count >= chunks.length) {resolve(spark.end())return}reader.readAsArrayBuffer(chunks[count])}reader.onload = (e) => {spark.append(e.target.result)count++loadNext()}loadNext()})
}// 4. 获取已上传切片(断点续传)
const getUploadedList = async (hash) => {const res = await fetch(`/uploaded-list?hash=${hash}`)return res.ok ? await res.json() : []
}// 5. 上传逻辑
const handleUpload = async () => {const uploaded = await getUploadedList(fileHash)const uploadChunk = (chunk, index) => {const form = new FormData()form.append('file', chunk)form.append('filename', file.name)form.append('chunkIndex', index)form.append('hash', fileHash)return fetch('/upload-chunk', {method: 'POST',body: form,})}const requests = fileChunks.map((chunk, index) => {if (uploaded.includes(index)) return nullreturn uploadChunk(chunk, index)}).filter(Boolean)let completed = uploaded.lengthconst total = fileChunks.lengthfor (const req of requests) {await reqcompleted++uploadProgress.value = Math.floor((completed / total) * 100)}// 通知合并await fetch('/merge-chunks', {method: 'POST',headers: { 'Content-Type': 'application/json' },body: JSON.stringify({ filename: file.name, hash: fileHash }),})ElMessage.success('上传成功 🎉')uploadProgress.value = 0
}
</script>

📡四、服务端接口规范(参考 Node)

接口说明:

接口描述
GET /uploaded-list?hash=xxx返回已上传切片 index 列表
POST /upload-chunk接收切片文件,保存到 /tmp/hash/index
POST /merge-chunks合并切片为完整文件,保存在 /uploads/

服务端可用 fs-extramulter 等处理上传,你需要支持以下流程:

  • 创建临时目录保存切片 /tmp/<hash>/index
  • 按顺序读取切片合并 fs.appendFileSync
  • 合并完成后清理切片

如果你需要我帮你写 Node.js 服务端的完整代码,也可以直接告诉我 👍


🧠五、总结回顾

功能实现点
切片上传Blob.slice() 分片,前端循环上传
秒传前端计算 hash,服务端校验是否上传过
断点续传获取已上传列表,跳过上传
合并通知上传完毕后请求服务端合并接口
UI 展示Element Plus 上传组件 + 进度条反馈
http://www.cadmedia.cn/news/641.html

相关文章:

  • 网站建设设计有哪些/淘宝运营培训班学费大概多少
  • 徐州网站制作案例/t和p在一起怎么做网站
  • 网络品牌推广计划/seo搜索引擎优化名词解释
  • maupassant wordpress/aso优化技巧大aso技巧
  • 简述网站建设的流程/成都百度推广公司电话
  • 成都旅游酒店住哪里比较方便/谷歌seo搜索
  • wordpress同步facebook/windows优化大师要钱
  • 东莞本地招聘网站有哪些/百度客户电话
  • 广州的网站建设公司哪家好/微信广告推广如何收费
  • 学做网站前景/网站目录提交
  • 山东企业网站建设费用/什么软件可以刷网站排名
  • 中工信融做网站怎么样/长春网站建设公司哪个好
  • 学校网站建设项目管理报告/网站的宣传推广方式
  • 做毕业设计免费网站建设/怎么注册网站免费的
  • 自己可以做类似淘宝客网站吗/网站搭建外贸
  • 同德县公司网站建设/2022知名品牌营销案例100例
  • 那个公司做网站/西安疫情最新数据消息5分钟前
  • 网站 建设服务器/河南网站顾问
  • 福州建设网站公司/seo和sem的区别与联系
  • sql做网站后台/短网址生成网站
  • 微信网站建设电话/百度刷seo关键词排名
  • 广州公安局门户网站/中国今日新闻
  • 做网站一般长宽多少/惠州网络营销公司
  • 网站制作公司优势/企业网站推广技巧
  • 西安三桥网站建设/广告推广怎么做
  • 网站快速网站推广/百度网页版 入口
  • 天河区做网站公司/网络服务器的作用
  • 铜川免费做网站/苏州百度
  • 网站备案后有什么好处/百度下载官方下载安装
  • 做电商网站必需知道qc/百度小说风云榜排行榜官网