
技术摘要:
本发明属于大数据存储技术领域,特别是涉及一种文件上传方法、装置及计算机设备。该方法包括:根据待上传文件的大小,确定需要被划分的文件块数量;将所述文件块数量分配到至少两个文件块表中;为每一个文件块表设置对应的一个哈希函数;依次计算所述文件内容在每一个 全部
背景技术:
目前的网页应用系统中(例如邮箱应用),文件上传是一项非常常见的功能。但是, 受到服务器,数据传输信道稳定性等的影响,许多的网页应用系统都无法支持GB级别的文 件上传,对于用户的日常使用造成比较大的限制。 为了解决文件上传大小的限制,现有一些技术方案提出了文件分块上传的方式。 亦即,将一个大文件切分为多个小文件进行上传,从而达到稳定上传和断点续传等的技术 效果。但是,现有的文件分块上传方式的分块方式过于简单,如直接利用数据条目进行切分 等的方式,没有很好的利用到文件自身内容信息的关联性,对于后续的解析校验和文件上 传均会造成消极的影响,文件上传效率有待提升。
技术实现要素:
本发明实施例提供了一种文件上传方法、装置、计算机设备及存储介质,旨在解决 现有技术中由于大文件上传效率低的技术问题。 第一方面,本发明实施例提供了一种文件上传方法,包括:根据待上传文件的大 小,确定所述待上传文件需要被划分的文件块数量,所述待上传文件由多个文件内容组成; 将所述文件块数量分配到至少两个文件块表中;每个文件块表中通过不同的键值 标识不同的文件块; 为每一个所述文件块表设置对应的一个哈希函数; 通过所述哈希函数,依次计算所述文件内容在每一个所述文件块表中所属的文件 块作为候选文件块; 在所述候选文件块中,选择文件块包含的文件内容最少的文件块作为所述文件内 容对应的目标文件块; 根据所述文件内容对应的目标文件块,将所述待上传文件切分为对应的多个文件 块; 通过多线程的方式同时上传至少两个所述文件块。 可选地,所述根据待上传文件的大小,确定所述待上传文件需要被划分的文件块 数量,包括: 预先划定多个不同的文件尺寸范围,每一个文件尺寸范围具有需要被划分的文件 块数量; 确定所述待上传文件所处的文件尺寸范围; 根据所述文件尺寸范围,确定所述待上传文件需要被划分的文件块数量。 可选地,所述通过多线程的方式同时上传至少两个所述文件块,包括: 4 CN 111586094 A 说 明 书 2/10 页 预估每一个文件块所需的上传时间; 将上传时间的差别在预设范围内的文件块放置在同一个待上传任务列表中; 启用多个上传线程,同时传输同一个待上传任务列表中的文件块。 可选地,所述预估每一个文件块所需的上传时间,包括: 通过广度优先搜索算法,计算每个文件块所需的上传时间。 可选地,所述将上传时间的差别在预设范围内的文件块放置在同一个待上传任务 列表中,包括: 将所有的文件块排列形成一个无序序列; 选取所述无序序列中的其中一个文件块为基准文件块; 沿所述无序序列的正向方向,依次比较所述基准文件块与所述无序序列中其他文 件块之间的上传时间; 在所述基准文件块的上传时间小于其他文件块时,交换所述基准文件块与所述其 他文件块在序列中的位置,以使所有上传时间大于所述基准文件块的文件块都被移动到所 述基准文件块的右侧; 沿所述无序序列的反向方向,依次比较所述基准文件块与所述无序序列中其他文 件块之间的上传时间; 在所述基准文件块的上传时间大于其他文件块时,交换所述基准文件块与所述其 他文件块在序列中的位置,以使所有上传时间小于所述基准文件块的文件块都被移动到所 述基准文件块的左侧; 重新选取新的基准文件块,直至所述无序序列更新为按照上传时间的大小排列的 有序序列为止; 根据所述预设范围,将所述有序序列中的文件块切分到对应的待上传列表中。 可选地,所述将所述文件块数量分配到至少两个文件块表中,包括: 将所述文件块数量平均分配到第一文件块表和第二文件块表中,第一和第二文件 块表中包含N/2个文件块,N为需要被划分的文件块数量; 在所述第一文件块表中,通过依次递增的第一键值标识N/2个所述文件块; 在所述第二文件块表中,通过依次递增的第二键值标识N/2个所述文件块。 可选地,所述通过所述哈希函数,依次计算所述文件内容在每一个所述文件块表 中所属的文件块作为候选文件块,包括: 分别通过第一哈希函数和第二哈希函数计算所述文件内容对应的第一键值和第 二键值,所述第一哈希函数与所述第一文件块表对应,所述第二哈希函数与所述第二文件 块表对应; 根据所述文件内容对应的第一键值,确定在所述第一文件块表中所属的文件块, 并且 根据所述文件内容对应的第二键值,确定在所述第二文件块表中所属的文件块。 第二方面,本发明实施例提供了一种文件上传装置,包括:文件块数量设定模块, 用于根据待上传文件的大小,确定所述待上传文件需要被划分的文件块数量,所述待上传 文件由多个文件内容组成; 文件块表设置模块,用于将所述文件块数量分配到至少两个文件块表中;每个文 5 CN 111586094 A 说 明 书 3/10 页 件块表中通过不同的键值标识不同的文件块; 哈希函数设置模块,用于为每一个所述文件块表设置对应的一个哈希函数; 哈希映射模块,用于通过所述哈希函数,依次计算所述文件内容在每一个所述文 件块表中所属的文件块作为候选文件块; 选择模块,用于在所述候选文件块中,选择文件块包含的文件内容最少的文件块 作为所述文件内容对应的目标文件块; 文件切分模块,用于根据所述文件内容对应的目标文件块,将所述待上传文件切 分为对应的多个文件块; 上传模块,用于通过多线程的方式同时上传至少两个所述文件块。 第三方面,本发明实施例又提供了一种计算机设备,包括存储器、处理器及存储在 所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时 实现如上所述的文件上传方法。 第四方面,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存 储介质存储有计算机程序,所述计算机程序当被处理器执行时使所述处理器执行如上所述 的文件上传方法。 本发明实施例提供的文件上传方法、装置计算机设备及存储介质,其使用至少两 个不同的哈希函数,共同进行文件块切分,以保证文件块的大小较为一致,可以避免单个哈 希函数进行文件块切分时,由于不同文件块之间的大小不均匀,造成的文件上传效率地下 的问题,提高了文件上传效率。 附图说明 为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的 附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普 通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。 图1为本发明实施例提供的一种计算机设备的结构示意图; 图2为本发明实施例提供的一种文件上传方法的流程示意图; 图3为单个哈希函数切分后的文件块表的结构示意图; 图4为本发明实施例提供的两个哈希函数切分文件的切分流程示意图; 图5为图1中步骤27的流程示意图; 图6是本发明实施例提供的文件块上传时间分布情况获取方法的示意图; 图7为本明实施例提供的一种文件上传装置的结构示意图。