# 基于S3协议完成文件的分片上传 断网续传 **Repository Path**: jiangzhishu-1/s3upload ## Basic Information - **Project Name**: 基于S3协议完成文件的分片上传 断网续传 - **Description**: 基于S3协议完成文件的分片上传 断网续传 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-02-28 - **Last Updated**: 2024-04-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #分支情况: master分支的是使用minio的SDK 实现的 S3分支则是使用s3亚马逊的sdk实现,理论上支持s3协议的文件系统都支持分片上传 # 实现思路: 1. 用户调用初始化接口,后端调用minio初始化,得到uploadId,生成每个分片的minio上传url 2. 用户调用对应分片的上传地址,多次上传会覆盖 3. 调用完成接口,后端查询所有上传的分片并合并 前后端协商好分多大,分多少片,然后服务端处理返回对应分片的url,前端分割上传到对应地址,最后告诉服务端上传完成,服务端进行校验和合并 , # 为什么不采用服务端上传的方式? 通过服务端上传用户的文件,再上传到文件系统的方式,第一浪费带宽,第二效率也慢,所以,采用的是服务端签名url,让前端直接上传分片文件 # 为什么不一次性获取预上传url? 因为上传地址具有时效性。可能单个上传地址有效时间为10分钟(当然如果设置的比较长,就能解决问题),但是文件上传完可能需要20分钟,那么在并发上传请求时,可能某些分片在上传地址失效后才轮到它去执行。此时就需要有个机制去重新获取预签名上传地址 # 使用阿里云进行上传跨域问题 那是因为bucket桶没有设置跨域,进入后台系统进行配置即可