基于fastdfs的大文件分块上传及加密存储方法技术

技术编号:38143922 阅读:10 留言:0更新日期:2023-07-08 10:00
本发明专利技术涉及基于fastdfs的大文件分块上传及加密存储方法,包括如下步骤:获取用户选择上传文件,并按一定大小对文件进行切块,记录切块数,唯一文件标识信息后,多线程并发式请求服务端;分块文件上传;针对上传好的分块文件,进行AES文件流加密;将加密后的分块文件执行最后的上传fastdfs操作。本发明专利技术提供的基于fastdfs的大文件分块上传及加密存储方法,基于大文件的分块上传原理,适配fastdfs文件服务,最大限度的提升大文件上传的容错率及上传速率。同时,本发明专利技术对每一个分块文件进行AES加密存储,结合fastdfs存储特性,集分块,加密,不可读文件名及随机存储路径,使文件存储的安全性,得到了充足的保障。得到了充足的保障。得到了充足的保障。

【技术实现步骤摘要】
基于fastdfs的大文件分块上传及加密存储方法


[0001]本专利技术涉及文件加密上传
,具体涉及基于fastdfs的大文件分块上传及加密存储方法。

技术介绍

[0002]fastdfs文件服务作为一个开源的轻量级分布式文件系统,具有分组存储,对等结构,对大、中、小文件均可以很好支持等特点,因此得到许多公司企业的青睐。但对于大文件的分块上传,只支持有顺序的调用其内部的append接口方法,对文件分块进行有序的追加合并,解决了大文件上传在弱网条件下的容错率。但在高带宽环境中,并不能并发上传对象分块来充分利用网络带宽,最大限度的增加文件上传的速度。
[0003]为了优化上传速率,进一步提高用户上传文件体验,此专利放弃fastdfs自带的append拼接文件接口,记录大文件分块上传过程中的每一块分块文件的唯一标识信息及上传返回的存储路径信息,并对每一块分块文件字节流进行AES加密,前端可并发上传分块文件,并由服务端返回唯一标识文件的已上传分块数量,当所有分块文件上传完后,通知服务端对该文件进行实际业务数据的写入,并关联唯一标识。在文件下载时,基于唯一标识关联查询分块文件,进行对称密钥解密下载,生成二进制文件,最后追加写入响应流。
[0004]现有技术中,前端采用vue

simple

uploader上传组件并进行封装,对大文件进行切块之后,携带切块文件及其相关信息并发请求服务端,服务端用MultipartFile接收分块文件,对分块文件字节流进行AES加密后,上传至fastdfs服务器中,fastdfs返回上传存储路径后,持久化记录此次上传的分块文件信息,含标识分块属同一文件的唯一标识,存储路径,MD5等信息。之后返回该文件已上传的片数信息。
[0005]前端根据返回的上传片数信息,判断是否完成整个文件上传,若整个文件的分块文件都上传成功,则请求业务接口,写入主文件信息并关联该文件唯一标识。
[0006]在文件下载时,基于唯一标识关联查询分块文件,进行对称密钥解密下载,生成二进制文件,最后追加写入响应流。
[0007]在分块上传文件整个过程,不对分块文件进行合并处理,节约了服务器的内存资源,同时也最大限度的提高了大文件上传的速率及容错率,并对每个分块文件进行AES加密,且由于fastdfs本身分卷存储及含fileId命名的特性,集分块,加密,不可读文件名及随机存储路径,使文件存储的安全性,得到了充足的保障。
[0008]然而,现有技术分块文件的结构化信息记录数据会很多,且用户取消上传后,之前文件的分块文件不进行删除操作,易在服务器内形成分片文件的非结构化脏数据。

技术实现思路

[0009]为解决已有技术存在的不足,本专利技术提供了一种基于fastdfs的大文件分块上传及加密存储方法,包括如下步骤:步骤S1:获取用户选择上传文件,并按一定大小对文件进行切块,记录切块数,唯
一文件标识信息后,多线程并发式请求服务端;步骤S2:分块文件上传;步骤S3:针对上传好的分块文件,进行AES文件流加密;步骤S4:将加密后的分块文件执行最后的上传fastdfs操作。
[0010]其中,所述步骤S2包括如下步骤:步骤S21:构建chunk实体类内二进制文件;步骤S22:通过getBytes()函数获取上传后的文件二进制后计算其MD5值,与前端传递的上传之前的文件二进制的MD5值进行对比,确保文件无缺失。
[0011]其中,所述步骤S2中,在上传过程中,以每个分块文件为单位进行MD5值校验,来判断所上传的文件是否存在于整个fastdfs内,以避免相同文件的重复存储。
[0012]其中,所述步骤S3包括如下步骤:步骤S31:生成指定算法密钥生成器的 KeyGenerator 对象,指定秘钥加密的算法"SHA1PRNG",以及密钥,取得转换完的AES专用密钥;步骤S32:构建Cipher的AES加密实例;步骤S33:通过Cipher的AES加密实例及文件输入流来构建CipherInputStream加密流;步骤S34:将加密流写入文件后取得文件二进制byte数据,至此文件流加密完成。
[0013]本专利技术提供的基于fastdfs的大文件分块上传及加密存储方法,基于大文件的分块上传原理,适配fastdfs文件服务,最大限度的提升大文件上传的容错率及上传速率。同时,本专利技术对每一个分块文件进行AES加密存储,结合fastdfs存储特性,集分块,加密,不可读文件名及随机存储路径,使文件存储的安全性,得到了充足的保障。
附图说明
[0014]图1为本专利技术的基于fastdfs的大文件分块上传及加密存储方法的实现流程图。
具体实施方式
[0015]为了对本专利技术的技术方案及有益效果有更进一步的了解,下面结合附图详细说明本专利技术的技术方案及其产生的有益效果。
[0016]本专利技术中,涉及到的术语在此解释及约定如下:fastdfs:一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。
[0017]分块上传:将要上传的文件切成一片片小的区块进行上传,然后服务端接收这些前端上传过来的小区块,存储到服务器存储文件的目录下,待上传完毕时将这些小区块合并成一个文件,并将已上传的这些区块删除。至此,上传过程结束。
[0018]加密存储:对上传至文件服务的文件,在系统上传过程中,读取文件流并对该文件流进行加密后,再上传至最后的文件存储服务。
[0019]图1为本专利技术的基于fastdfs的大文件分块上传及加密存储方法的实现流程图,本专利技术基于fastdfs建立的系统提供了灵活高效且安全可靠的大文件上传策略,主要实现以下功能:
1、基于Vue封装的定制化Uploader组件获取用户选择上传文件,并按一定大小对文件进行切块,记录切块数,唯一文件标识等信息后,多线程并发式请求服务端。其中唯一文件标识由上传前从服务器获取,用于标识某些分块文件同属某一整个文件,在上传完成后,记录于分块信息表及业务文件表内作为文件信息的关联,即业务文件表通过此标识,在分块信息表中拿到该整个文件的所有分块文件信息,用于文件下载。
[0020]2、分块文件上传构建chunk实体类,借用java中spring框架接口“MultipartFile”接收请求体(接收请求体内所接收文件以及文件信息的放置位置涉及:http请求体body,binaryBody存放文件、textBody存放文件相关信息)内二进制文件。通过getBytes()函数获取文件二进制后计算其MD5值,与前端传递的上传之前的文件二进制的MD5值进行对比,确保文件无缺失。
[0021]在上传过程中,以每个分块文件为单位进行MD5值校验,来判断所上传的文件是否存在于整个fastdfs内,以避免相同文件的重复存储,具体的:通过查询系统内所存储的文件的MD5值来判断是否上传过当本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于fastdfs的大文件分块上传及加密存储方法,其特征在于包括如下步骤:步骤S1:获取用户选择上传文件,并按一定大小对文件进行切块,记录切块数,唯一文件标识信息后,多线程并发式请求服务端;步骤S2:分块文件上传;步骤S3:针对上传好的分块文件,进行AES文件流加密;步骤S4:将加密后的分块文件执行最后的上传fastdfs操作。2.如权利要求1所述的基于fastdfs的大文件分块上传及加密存储方法,其特征在于,所述步骤S2包括如下步骤:步骤S21:构建chunk实体类内二进制文件;步骤S22:通过getBytes()函数获取上传后的文件二进制后计算其MD5值,与前端传递的上传之前的文件二进制的MD5值进行对比,确保文件无缺失。3.如权利要求1所述的基于fastdfs的大...

【专利技术属性】
技术研发人员:陈文郭静东阴泽鹏余强刘晨
申请(专利权)人:麒麟软件有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1