成品短视频源码出售,如何实现大文件秒传?
成品短视频源码出售,如何实现大文件秒传?
大文件秒传
逻辑梗概
客户端上传文件时,先提交文件的哈希值,
服务端根据哈希值查询文件是否已经上传,如果已上传,则直接返回已上传状态
客户端收到已上传状态后,直接跳过上传过程
优势分析
提高上传效率:秒传可以提高上传效率,因为文件已经在上传过程中被上传过了,直接返回已上传状态,省要再次上传,提高效率。
代码实现
校验接口,校验是否已经存在目标文件
逻辑:根据文件Hash值和文件名组成 “文件Hash.文件扩展名” ,以保证文件名唯一
app.get('/verify', (req, res) => { const { fileHash, fileName } = req.query; const filePath = path.resolve('uploadFiles', fileHash + path.extname(fileName)); const exitFile = fse.pathExistsSync(filePath); res.send({ exitFile }) })
校验函数
// 校验文件、文件分片是否存在 const verify = (fileHash, fileName) => { return fetch(`http://localhost:3000/verify?fileHash=${fileHash}&fileName=${fileName}`, { method: "GET", }).then(res => res.json()); }; // 文件上传 const uploadFile = async (file) => { // 设置文件名 fileName = file.name; // 获取文件hash值 fileHash = await getHash(file); // 校验是否已经上传该文件 let { exitFile } = await verify(fileHash, fileName); if (exitFile) { return { mag: "文件已上传", success: true } } // 获取切片 chunks = createChunks(file); try { await uploadChunks(chunks.filter(chunk => !chunk.uploaded)) await mergeRequest(fileHash, fileName) } catch (err) { return { mag: "文件上传错误", success: false } } }
以上就是成品短视频源码出售,如何实现大文件秒传?, 更多内容欢迎关注之后的文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2023-08-31 直播平台开发,multiple-select 单选框多选框的用法
2023-08-31 直播app开发搭建,动态广场内,图片上传到软件
2023-08-31 直播软件搭建,element ui Backtop 回到顶部
2022-08-31 成品直播源码推荐,TabLayout 去掉按下时的阴影效果
2022-08-31 视频直播app源码,Flutter实战底部导航栏
2022-08-31 app直播源代码,如何自适应页面剩余高度
2021-08-31 直播带货系统源码利用FloatingActionButton实现 展开/折叠多级悬浮菜单