# LargeFileUpload **Repository Path**: li_xinyang37/large-file-upload ## Basic Information - **Project Name**: LargeFileUpload - **Description**: 大文件断点续传 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-12-30 - **Last Updated**: 2022-03-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 大文件上传、断点续传 ---- ## 第一版本 ### 涉及技术   使用了RandomAccessFile随机读写类+redisson ### 实现流程   1、首先前端会将文件按照指定大小进行切片,然后发送到后端   2、后端接收到后会先判断文件是否达到目标大小     2-1、如果未达到目标大小则会通过File去创建一个文件,然后将收到的分片通过流写入到新建文件中     2-2、如果达到目标大小则会进行分片合并   3、在接收每一个分片之后会将分片对应的大小写入到redis中,通过获取redisson的RLock来保证对已上传文件的总大小进行修改   4、合并操作     4-1、在进行合并的时候会先将目标文件对应的所有分片读入到一个列表中并通过分片名进行排序     4-2、通过RandomAccessFile随机读写文件类创建一个与目标文件同名的文件,设置为可读     4-3、通过ThreadPoolExecutor线程池来对分片异步的进行写入到指定文件,线程池采用有返回值的Callable来执行任务   5、合并完成之后将信息写入数据库,删除分片,删除redis中生成的记录 ### 版本存在问题   1、没有做断点续传的判断   2、使用redisson的RLock导致上传速度慢   3、使用了ThreadPoolExecutor管理线程池来异步写入分片是一个伪异步   4、需要加一个计时功能来测试上传的速度