go 文件上传系统


文件上传系统是前后端分离项目,实现普通文件上传、大文件分片上传功能;大文件分片上传提供并发上传、超时控制、失败重传、中止上传等能力,通过分片md5、文件md5验证完整性。

该项目包含浏览器前端和命令行前端,流程图、交互图介绍时使用命令行前端。

命令行前端项目

上传流程图

前后端交互图

源码

https://gitee.com/file-upload-system

演示

详细设计:

  1. 小于1M文件上传直接上传
  2. 大于1M全新文件,分片上传,上传成功
  3. 大于1M全新文件分片上传,部分分片上传失败重传,文件上传成功
  4. 大于1M上传过文件再次上传,文件上传成功
小于1M文件上传直接上传在这里插入图片描述#### 大于1M全新文件,分片上传,上传成功

在这里插入图片描述

大于1M全新文件分片上传,部分分片上传失败重传,文件上传成功

在这里插入图片描述

大于1M上传过文件再次上传,文件上传成功

在这里插入图片描述

浏览器前端项目

https://gitee.com/go_web_1

演示

普通文件上传、列表、下载、预览

详细设计:

  1. 文件正常上传,上传完成文件在上传列表中展示
  2. 上传列表支持刷新获取最新数据
  3. 已上传文件支持下载、预览

普通文件上传演示

大文件分片上传

详细设计:

  1. 大文件分片上传成功,上传过程中展示loading、上传进度 // 视频 0″ 开始
  2. 文件未上传完成,未上传完成分片再次上传 // 视频 38″ 开始
  3. 分片部分上传失败,自动尝试重传,重传成功 // 视频 59″ 开始
  4. 上传过程中中止上传 // 视频 1′35″ 开始
  5. 上传超时中断上传 // 视频 2′12″ 开始

大文件上传演示

性能优化

大文件hash计算较慢,后端保证所有分片已上传且完整,可以无需计算文件hash

浏览器前端对比go cmd客户端

功能浏览器前端go cmd客户端
超时控制setTimout+监听context上下文,链式控制
并发单线程,Promise.allSettledgoroutine天然支持
文件操作浏览器沙箱,支持简单api操作 // 文件hash计算明显慢很多本地文件系统操作高效

相关资料

前端必学 - 大文件上传如何实现

使用Go实现并发切片上传和下载文件

进阶资料

解读Google分布式文件系统GFS // 这个bilibili博主的作品都不错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值