成品短视频源码出售,如何实现大文件秒传?

成品短视频源码出售,如何实现大文件秒传?

大文件秒传

逻辑梗概

客户端上传文件时,先提交文件的哈希值,
服务端根据哈希值查询文件是否已经上传,如果已上传,则直接返回已上传状态
客户端收到已上传状态后,直接跳过上传过程

优势分析

提高上传效率:秒传可以提高上传效率,因为文件已经在上传过程中被上传过了,直接返回已上传状态,省要再次上传,提高效率。

代码实现
校验接口,校验是否已经存在目标文件

逻辑:根据文件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
        }
    }
}
复制代码

 

以上就是成品短视频源码出售,如何实现大文件秒传?, 更多内容欢迎关注之后的文章

 

posted @   云豹科技-苏凌霄  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 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实现 展开/折叠多级悬浮菜单
点击右上角即可分享
微信分享提示