掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本申请实施例涉及网络通信技术领域,具体而言,涉及一种文件云同步方法、系统及电子设备。

背景技术

自移动端、PC端大规模普及之后云存储也普及开来,基于云存储的文件云同步应用也大批量出现,例如云笔记等基于思维导图文件可以在多个终端记录用户的想法、感觉、记忆或是知识。这类多端文件云同步应用可以通过网络将服务器端的文件随时随地下载到本地,也可以将本地端的文件上传到服务器,其文件支持用户自定义多级目录结构。

现有的文件云同步应用中,云空间中创建文件目录和文件都会按照实际云空间中的路径进行本地目录映射存储。现有技术方案在对相同的用户文件进行文件移动、文件复制等功能时,都需要重新在本地存储中建立新存储路径并在新存储路径下保存该用户文件,导致在本地保存有多份相同的用户文件,或者需要在本地频繁操作本地文件和缓存进行文件转移。现有技术方案不仅占用移动端的硬件资源,而且在本地频繁操作本地文件和缓存,容易造成本地文件和文件修改内容的丢失。因此,有必要对现有的文件云同步过程进行优化。

发明内容

针对上述现有技术中存在的问题,本申请实施例提供了一种文件云同步方法、系统及电子设备,可以节约本地端的硬件资源,而且无需在本地频繁操作本地文件和缓存,降低了数据损坏的风险。

第一方面,本申请实施例提供了一种PDF文件的字体压缩方法,其中,包括:在本地端保存同一用户所属的云端文件的文件信息,每一条文件信息至少包含文件唯一标识、云端存储路径;

保存从云端下载文件的本地下载记录,每一条本地下载记录至少包含文件唯一标识、本地端存储路径和文件属性信息;

在下载第一目标文件之前,判断本地下载记录中是否存在第一下载记录,所述第一下载记录中的文件唯一标识与云端查询到的所述第一目标文件的文件唯一标识一致;

若存在第一下载记录,则根据本地端保存的云端存储路径从云端查询所述第一目标文件的最新文件属性信息,并判断所述第一下载记录中的文件属性信息与所述最新文件属性信息是否一致;若一致,则直接从本地读取所述第一下载记录中本地端存储路径下的文件作为所述第一目标文件。

进一步地,若本地下载记录中不存在所述第一下载记录或所述第一下载记录中的文件属性信息与所述云端存储的第一目标文件的属性信息不一致,所述方法还可以包括:

根据云端查询所述第一目标文件的云端存储路径下载对应的文件,并更新所述第一目标文件对应的本地下载记录。

进一步地,本申请实施例中的文件云同步方法还可以包括:

为处于不同目录等级的云端文件分配不同的文件目录归属标识并在本地端的文件信息中保存,使得处于同一目录等级的云端文件具有相同的文件目录归属标识;

当在本地端选中查询第一目录等级时,根据所述第一目录等级对应的文件目录归属标识查询关联的云端文件。

进一步地,本申请实施例中的文件云同步方法还可以包括:

在每一条本地下载记录中设置文件修改标识,所述文件修改标识用于指示下载到本地的文件是否被修改。

进一步的,在所述判断所述第一下载记录中的文件属性信息与所述云端存储的第一目标文件的属性信息是否一致之前,本申请实施例中的文件云同步方法还可以包括:

根据所述第一下载记录中的文件修改标识判断本地存储的第一目标文件是否被修改;若被修改,则将本地存储的第一目标文件上传至云端。

进一步地,本申请实施例中的文件云同步方法还可以包括:

在缓存目录中解压所述第一目标文件,并根据操作指令对缓存目录中的文件进行编辑;

在编辑完成之后,在所述第一目标文件对应的本地下载记录中更新文件修改标识,以指示下载到本地的第一目标文件已被修改。

进一步地,本申请实施例中的文件云同步方法还可以包括:

在本地端的第二目标文件被修改后,判断本地已下载的第二目标文件的属性信息是否与所述云端存储的第二目标文件的最新文件属性信息是否一致;若不一致,则将本地端存储的所述第二目标文件的云端存储路径修改为新云端存储路径,并按照所述新云端存储路径上传修改后的第二目标文件。

第二方面,本申请实施例还提供了一种PDF文件的字体压缩装置,其中,包括:

第一存储模块,用于在本地端保存同一用户所属的云端文件的文件信息,每一条文件信息至少包含文件唯一标识、云端存储路径;

第二存储模块,用于保存从云端下载文件的本地下载记录,每一条本地下载记录至少包含文件唯一标识、本地端存储路径和文件属性信息;

第一处理模块,在下载第一目标文件之前,判断本地下载记录中是否存在第一下载记录,所述第一下载记录中的文件唯一标识与云端查询到的所述第一目标文件的文件唯一标识一致;

第二处理模块,若存在第一下载记录,则根据本地端保存的云端存储路径从云端查询所述第一目标文件的最新文件属性信息,并判断所述第一下载记录中的文件属性信息与所述最新文件属性信息是否一致;若一致,则直接从本地读取所述第一下载记录中本地端存储路径下的文件作为所述第一目标文件。

第三方面,本申请实施例还提供了一种电子设备,其中,包括:存储器以及处理器,所述存储器用于存储并支持处理器执行第一方面中任一项所述方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序。

第四方面,本申请实施例还提供了一种具有处理器可执行的非易失的程序代码的计算机可读介质,其中,所述程序代码使所述处理器执行所述第一方面的任一所述方法。

本申请实施例带来了以下有益效果:

本申请实施例中,在本地端预先保存了云端文件的文件信息和本地下载记录,在进行文件下载之前,可以根据所需下载的第一目标文件的文件唯一标识在本地下载记录中查询是否存在已下载的文件唯一标识相同的云端文件。若存在已下载的文件唯一标识相同的云端文件,则本地端保存的云端存储路径从云端查询第一目标文件的最新文件属性信息,并判断所述第一下载记录中的文件属性信息与所述最新文件属性信息是否一致;若一致,则直接从本地读取所述第一下载记录中本地端存储路径下的文件作为第一目标文件。相对于现有技术方案,本申请实施例中的技术方案,在执行文件移动、复制、下载等操作时,无需在本地端重复下载内容相同但命名不同的用户文件,节约了本地端的硬件资源,而且无需在本地频繁操作本地文件和缓存,降低了数据损坏的风险。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。

图1为本申请实施例提供的文件云同步方法的一个实施例示意图;

图2为本申请实施例提供的文件云同步方法的另一个实施例示意图;

图3为本申请实施例提供的文件云同步方法的另一个实施例示意图;

图4为本申请实施例提供的文件云同步方法的一个具体实施例示意图;

图5为本申请实施例提供的文件云同步方法的一个具体实施例中的子流程1示意图;

图6为本申请实施例提供的文件云同步方法的一个具体实施例中的子流程2示意图;

图7为本申请实施例提供的文件云同步方法的一个具体实施例中的子流程3示意图;

图8为本申请实施例提供的文件云同步方法的一个具体实施例中的子流程4示意图;

图9为本申请实施例提供的文件云同步方法的一个具体实施例中的子流程5示意图;

图10为本申请实施例提供的电子设备的一个实施例示意图。

本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请的说明书和权利要求书及上述附图中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。术语“包括”及其任何变形,意图在于覆盖不排他的包含。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。

现有云端文件同步方案中,对文件内容相同但命名不同的用户文件进行文件移动、文件复制等功能时,都需要重新在本地存储中建立新存储路径并在新存储路径下保存该用户文件,不仅占用移动端的硬件资源,而且在本地频繁操作本地文件和缓存。为解决这一问题,申请人提出在本地记录云端文件的文件信息与文件下载到本地的本地下载记录,在对一些已经从云端下载到本地端的文件进行文件移动、文件复制等操作时,无需对本地存储的文件和缓存进行任何移动和复制,只需要调整数据库表中记录的虚拟目录映射的信息即可,减少出错的概率。

为了便于理解,下面对本申请实施例中的具体流程进行描述,请参阅图1,本申请实施例中一种文件云同步方法的一个实施例可包括:

S101:在本地端保存同一用户所属的云端文件的文件信息。

本申请实施例中,预先在本地端保存同一用户所属的云端文件的文件信息。其中,每一条文件信息至少包含文件唯一标识、文件在云端存储路径。

可选的,文件信息还可以包含本地存储路径、文件目录归属标识(标识文件所处的目录等级)、文件属性信息等信息中的一项或多项,具体可以根据需求进行合理的设置,此处不做限定。其中,文件属性信息包含采用预设数据校验算法对文件计算生成的校验数据(例如哈希算法生成的哈希值),还可以包含文件类型、文件大小、文件名等信息中的一项或多项。

需要说明的是,在本地端保存用户所属的云端文件的文件信息的过程是持续性的,本地端可以随时或周期性的,主动或被动的从云端获取同一用户所属的云端文件的文件信息,具体的实施方式此处不做限定。

S102:保存从云端下载文件的本地下载记录。

为了不重复下载相同的文件,可以在每次下载文件之后,保存从云端下载文件的本地下载记录,以便在后续的文件下载操作之前进行查询。其中,每一条本地下载记录至少包含文件唯一标识、文件在本地端存储路径和文件属性信息。同样,文件属性信息包含采用预设数据校验算法对文件计算生成的校验数据(例如哈希算法生成的哈希值),还可以包含文件类型、文件大小、文件名等信息中的一项或多项。

可选的,本地下载记录还可以文件下载状态标识、修改标识(标识已下载的文件是否被修改)等信息中的一项或多项,具体可以根据需求进行合理的设置,此处不做限定。

S103:判断本地下载记录中是否存在第一下载记录。

若用户需要对云端文件(例如第一目标文件)进行文件移动、复制或下载等操作,首先需要对第一目标文件进行下载。在下载第一目标文件之前,可以判断本地是否已经下载过第一目标文件的文件唯一标识指示的云端文件。具体而言,可以根据第一目标文件的唯一标识查询本地下载记录,判断本地下载记录中是否存在第一下载记录。其中,第一下载记录中的文件唯一标识与云端查询到的第一目标文件的文件唯一标识一致。

若存在第一下载记录,则执行步骤S104,否则执行步骤S106。

S104:从云端查询第一目标文件的最新文件属性信息,并判断第一下载记录中的文件属性信息与最新文件属性信息是否一致。

若识别到本地已经下载过第一目标文件的文件唯一标识指示的云端文件之后,还需要判断该云端文件在本地端下载之后的时间段内是否被其他本地端更新过。具体而言,可以根据本地存储云端存储路径从云端查询第一目标文件的最新文件属性信息,然后判断第一下载记录中的文件属性信息与云端存储的第一目标文件的最新文件属性信息是否一致,若一致,则云端未更新,则执行步骤S105,否则云端已更新,执行步骤S106。

S105:直接从本地读取第一下载记录中本地端存储路径下的文件作为第一目标文件。

第一下载记录中的文件属性信息与云端存储的第一目标文件的属性信息一致,则直接从本地读取第一下载记录中本地端存储路径下的文件作为第一目标文件。进一步的,还可以将第一下载记录中本地端存储路径写入第一目标文件的文件信息(即更新第一目标文件中的文件信息中的本地存储路径),以便于重复查阅。

S106:根据云端查询第一目标文件的云端存储路径下载对应的文件,并更新第一目标文件对应的本地下载记录。

若本地下载记录中不存在第一下载记录或第一下载记录中的文件属性信息与云端存储的第一目标文件的属性信息不一致,则根据云端查询第一目标文件的云端存储路径下载对应的文件,并更新第一目标文件对应的本地下载记录。具体的更新过程中,可以记录文件唯一标识、文件在本地端存储路径和文件属性信息,以及上述步骤S102中选用的其他额外扩展信息。

可以理解的是,在本申请的各种实施例中,上述各步骤的序号的大小并不意味着执行顺序的先后,各步骤的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。例如步骤S101和S102都是可持续的动作并不限定执行顺序。

由以上公开内容可知,本申请实施例中,在本地端预先保存了云端文件的文件信息和本地下载记录,在进行文件下载之前,可以根据所需下载的第一目标文件的文件唯一标识在本地下载记录中查询是否存在已下载的文件唯一标识相同的云端文件。若存在已下载的文件唯一标识相同的云端文件,则本地端保存的云端存储路径从云端查询第一目标文件的最新文件属性信息,并判断第一下载记录中的文件属性信息与最新文件属性信息是否一致;若一致,则直接从本地读取第一下载记录中本地端存储路径下的文件作为第一目标文件。相对于现有技术方案,本申请实施例中的技术方案,在执行文件移动、复制、下载等操作时,无需在本地端重复下载内容相同但命名不同的用户文件,节约了本地端的硬件资源,而且无需在本地频繁操作本地文件和缓存,降低了数据损坏的风险,提高了数据的安全性。

在上述图1所示的实施例的基础上,下面将对本申请中的文件云同步方法中的本地端文件浏览、文件同步上传相关过程进行描述。本发明实施例中的文件云同步方法的另一个实施例可包括:

S201:为处于不同目录等级的云端文件分配不同的文件目录归属标识,使得处于同一目录等级的云端文件具有相同的文件目录归属标识。

为了便于本地端根据文件目录查询目录指向的文件,本申请实施例中,为处于不同目录等级的云端文件分配不同的文件目录归属标识,将处于同一目录等级的云端文件具有相同的文件目录归属标识。当用户浏览到第一目录等级时,可以根据第一目录等级对应的文件目录归属标识查询关联的云端文件。

S202:在本地端保存同一用户所属的云端文件的文件信息。

本申请实施例中,预先在本地端保存同一用户所属的云端文件的文件信息。其中,每一条文件信息至少包含文件唯一标识、文件在云端存储路径以及文件目录归属标识。

可选的,文件信息还可以包含本地存储路径、文件目录归属标识(标识文件所处的目录等级)、文件属性信息等信息中的一项或多项,具体可以根据需求进行合理的设置,此处不做限定。其中,文件属性信息包含采用预设数据校验算法对文件计算生成的校验数据(例如哈希算法生成的哈希值),还可以包含文件类型、文件大小、文件名等信息中的一项或多项。

需要说明的是,在本地端保存用户所属的云端文件的文件信息的过程是持续性的,本地端可以随时或周期性的,主动或被动的从云端获取同一用户所属的云端文件的文件信息,具体的实施方式此处不做限定。

S203:保存从云端下载文件的本地下载记录。

S204:当在本地端选中显示第一目录等级时,根据第一目录等级对应的文件目录归属标识查询关联的云端文件。

当在本地端选中显示第一目录等级时,根据第一目录等级对应的文件目录归属标识查询关联的云端文件。例如,若A是用户云文件根目录下的一个文件夹,A的文件目录归属标识parent_id设置为0;若B文件、C文件的是A中的一个文件,则B文件、C文件处于同一目录等级,设置B文件、C文件的parent_id均为1。在本地端保存同一用户所属的云端文件的文件信息之后,若用户当前浏览的文件A文件夹下的目录,则查询数据库所有parent_id为1的文件进行展示。

以下步骤以用户在本地端选中显示第一目录等级下,选中第一目标文件进行下载操作为例进行说明。

S205:判断本地下载记录中是否存在第一下载记录。

S206:从云端查询第一目标文件的最新文件属性信息,并判断第一下载记录中的文件属性信息与最新文件属性信息是否一致。

S207:直接从本地读取第一下载记录中本地端存储路径下的文件作为第一目标文件。

S208:根据云端查询第一目标文件的云端存储路径下载对应的文件,并更新第一目标文件对应的本地下载记录。

上述步骤S205至S208中描述的内容与上述图1所示的实施例中的步骤S103至S106中描述的内容类似,此处不做赘述。

由以上实施例公开的内容可知,本申请实施例中,为处于不同目录等级的云端文件分配不同的文件目录归属标识,将处于同一目录等级的云端文件具有相同的文件目录归属标识。当用户浏览到第一目录等级时,可以根据第一目录等级对应的文件目录归属标识查询关联的云端文件,实现了文件目录与云端文件的映射,提高了文件查询的效率。

在上述图1或图2实施例的基础上,当本地下载的文件被打开编辑之后,需要将本地端文件同步上传。下面将对相关过程进行描述。请参阅图3,本发明实施例中的文件云同步方法的另一个实施例可包括:

S301:在缓存目录中解压第二目标文件,并根据操作指令对缓存目录中的文件进行编辑。

在参照图1或图2所示实施例中的方式获取到第二目标文件之后,可以在缓存目录中解压第二目标文件,并根据操作指令对缓存目录中的文件进行编辑。具体的编辑指令可以是移动、复制、修改等,可以参照相关技术此处不做赘述。

S302:在编辑完成之后,在第二目标文件对应的本地下载记录中更新文件修改标识,以指示下载到本地的第二目标文件已被修改。

为便于识别保存在本地端的文件是否被修改,本申请实施例中,可以在本地现在本地下载记录中新增一项文件修改标识,该字段文件修改标识可以被设置为两种取值,分别用于标识下载到本地的文件已被修改或未被修改,其初始默认值标识本地的文件未被修改。在编辑完成之后,在第一目标文件对应的本地下载记录中更新文件修改标识,以指示下载到本地的第一目标文件已被修改。

S303:判断本地已下载的第二目标文件的属性信息是否与云端存储的第二目标文件的属性信息是否一致;

可选的,在本申请实施例中的一个可能的实施方式中,在识别到本地端的第二目标文件被修改后,需要将本地存储的第二目标文件进行上传同步。申请人注意到,云端存储的第二目标文件可能被本地端之外的其他终端更新,若直接将本地端存储的第二目标文件上传至云端,会导致其他终端更新的文件被覆盖,导致用户修改的内容丢失。为避免这一情况,在上传文件之前,可以根据本地端存储的第二目标文件的文件信息中的文件唯一标识,分别在本地下载记录和云端查询第二目标文件的文件唯一标识对应的属性信息和最新文件属性信息,进而判断本地已下载的第二目标文件的属性信息是否与云端存储的第二目标文件的最新文件属性信息是否一致。若一致,则执行步骤S305,则根据本地端保存的第二目标文件的云端存储路径进行上传;若不一致,则执行步骤S304。

S304:将本地端存储的第二目标文件的云端存储路径修改为新云端存储路径,并按照新云端存储路径上传修改后的第二目标文件。

若本地已下载的第二目标文件的属性信息是否与云端存储的第二目标文件的最新文件属性信息不一致,则说明云端文件已被更新。为防止云端已更新的文件被覆盖丢失,可以将本地端存储的第二目标文件的云端存储路径修改为新云端存储路径,并按照新云端存储路径上传修改后的第二目标文件。

S305:根据本地端保存的第二目标文件的云端存储路径进行上传。

由以上公开内容可知,本申请实施例中,在进行本地端存储的文件上传同步过程中,若本地已下载的第二目标文件的属性信息是否与云端存储的第二目标文件的最新文件属性信息不一致,可以将本地端存储的第二目标文件的云端存储路径修改为新云端存储路径,并按照新云端存储路径上传修改后的第二目标文件。相对于现有技术,可以避免第三终端上传到云端的文件更新内容被覆盖,避免了用户数据的丢失。

为了便于理解,请参阅图4至图9,下面将结合思维导图文件在本地端和云端之间的同步过程对本申请实施例中的文件云同步方法进行描述。

如图4所示,本申请中的文件云同步场景中的主要流程包括五个子流程,分别是:子流程1,用户数据初始化;子流程2,从服务器获取文件列表数据保存到本地数据库;子流程3,下载思维导图文件到本地;子流程4,打开思维导图文件进行编辑和保存;子流程5,上传思维导图文件到服务器。下面将依次对各个子流程进行介绍。

子流程1:用户数据初始化。

如图5所示,用户初次启动移动端程序后,会对用户数据初始化。具体而言,可以判断用户的文件存储根目录是否存在,若不存在则创建目录文件存储根目录和文件缓存根目录。其中文件存储根目录:用于存放用户下载的文件。文件缓存根目录:用户存放本地文件解压后的目录。然后,判断是否已经创建本地数据库表,若没有,则创建用户文件信息表和本地下载记录表作为本地数据库表。

其中,文件信息表:用于存储服务器返回的文件信息数据。本地下载记录表:用于存储下载到本地下载记录信息。可选的,作为一种可能的实施方式,文件信息表的主要字段如下表1:

表1

可选的,作为一种可能的实施方式,本地下载记录表的主要字段如下表2:

表2

子流程2:从服务器获取文件列表数据保存到本地数据库。

如图6,用户在移动端需要浏览文件列表数据时,可以先请求服务器文件列表接口,遍历接口返回的文件列表数据,并判断(遍历到的)文件的云路径是否存在本地数据库记录,若已存在,则更新已有的文件信息;若不存在,则插入一条新文件记录。其中包含各个文件的文件信息数据。单个文件信息包含表1中的file_cloud_path、file_size、file_type、etag等字段信息,移动端将这些信息存储到本地数据库中,每一条文件信息以一条记录存在。最后,从本地数据库中查询列表数据进行展示。移动端可以根据本地数据库中保存的file_id和parent_id字段进行数据查找或目录展示。例如,若A存储的file_id为1,A是用户云文件根目录下的一个文件夹,A的parent_id为0;若B文件、C文件的是A中的一个文件,则B文件、C文件的parent_id为1。若用户当前浏览的文件A的目录,则查询数据库所有parent_id为1的文件给用户展示。

子流程3:下载思维导图文件到本地。

如图7所示,用户从文件列表中选择一个文件进行编辑或下载时,先通过文件云路径从服务器获取文件详细信息(包括但不限于file_size1、etag1),同时通过file_id查询该文件是否存在本地下载记录。若不存在本地下载记录,则生成本地存储路径,并随机生成唯一性的文件名(例如采用UUID工具生成文件名),并更新文件信息和本地下载记录,具体可以依照表1和表2中的字段。

若存在本地下载记录,则根据本地下载记录查询到file_size2、etag2、modify_flag等字段。然后判断本地文件是否已修改,若已修改,则启动子流程5,以将本地已修改的文件上传到服务器。最后需要判断本地下载记录中的etag2与服务器查询到的etag1是否相等,若不相等,则说明服务器端的文件在被本地端下载之后有被第三终端修改过,需要删除本地文件和缓存文件目录并获取文件云端存储路径进行文件下载,而且需要更新本地下载记录,写入此次下载的记录信息,例如表2中的字段。若本地下载记录中的etag2与服务器查询到的etag1相等,则无需下载,直接从本地读取对应的文件。

子流程4:文件编辑流程。

如图8所示,在打开文件编辑时,因为从服务器下载的思维导图文件的往往是一个压缩包文件,无法直接加载或修改,因此需要将文件解压缩到缓存目录。解压完成后再从缓存目录加载中的文件进行展示。用户完成修改后关闭编辑页后,若文件有修改,则需要修改本地下载记录中的modify_flag,将其设置为1。移动端还需要将用户缓存区的文件重新打包压缩到本地文件存储路径(file_local_path字段)所指的路径。

子流程5:上传思维导图文件到服务器。

如图9所示,在用户退出编辑后,移动端可以根据file_id在本地下载记录中查询对应的file_size1、etag1、modify_flag等字段,并通过modify_flag字段的值可以判断本地文件是否有修改。若本地文件无修改,则无需上传,流程结束。若本地文件有修改,需要进行文件上传同步。在上传流程中,考虑到编辑过程可能存在异常,导致最后文件压缩不成功,所以需要进行预处理,具体的预处理包括:当识别到本地文件不存在或缓存文件有更新而本地文件包不是最新时,将缓存目录压缩打包。然后根据file_id从服务器获取对应的文件信息,包括但不限于file_size3、etag3等字段,并判断服务器端保存的etag3与本地端的etag1是否相等。若不相等,则表示本地端从服务器下载文件之后,服务器文件又被第三终端更新过,则需要将移动端存储的文件云路径修改成一个新路径,再进行上传,防止将其他端修改的内容覆盖。为此需要进行冲突处理。具体的冲突处理包括:将本地文件重命名,并获取新的云文件路径,然后进行文件进行上传,并更新本地文件信息表和本地下载记录,将modify_flag字段设置为默认值0。

此外若服务器端保存的etag3与本地端的etag1相等,则服务器端的文件未被更新,不存在冲突,进而可以获取云存储路径进行文件上传,并更新本地文件信息表和本地下载记录。上传成功后,将下载表中的modify_flag回0。

通过该技术方案实现了云文件列表数据在本地的虚拟目录映射,目录关系通过数据库表来存储。在进行一些文件操作时,都不需对本地存储的文件和缓存进行任何移动和复制,只需要调整数据库表的信息即可,减少出错的几率。同时通过将下载和上传核心的云文件同步流程原子化,在流程内进行服务器数据的比对,防止多端编辑时存在的冲突问题。

本发明实施例还提供了一种文件云同步系统,可包括:

第一存储模块,用于在本地端保存同一用户所属的云端文件的文件信息,每一条文件信息至少包含文件唯一标识、云端存储路径;

第二存储模块,用于保存从云端下载文件的本地下载记录,每一条本地下载记录至少包含文件唯一标识、本地端存储路径和文件属性信息;

第一处理模块,在下载第一目标文件之前,判断本地下载记录中是否存在第一下载记录,所述第一下载记录中的文件唯一标识与云端查询到的所述第一目标文件的文件唯一标识一致;

第二处理模块,若存在第一下载记录,则根据本地端保存的云端存储路径从云端查询所述第一目标文件的最新文件属性信息,并判断所述第一下载记录中的文件属性信息与所述最新文件属性信息是否一致;若一致,则直接从本地读取所述第一下载记录中本地端存储路径下的文件作为所述第一目标文件。

可选的,作为一种可能的实施方式,本申请实施例中的文件云同步系统还可以包括:

第三处理模块,若本地下载记录中不存在所述第一下载记录或所述第一下载记录中的文件属性信息与所述云端存储的第一目标文件的属性信息不一致,则根据云端查询所述第一目标文件的云端存储路径下载对应的文件,并更新所述第一目标文件对应的本地下载记录。

可选的,作为一种可能的实施方式,本申请实施例中的文件云同步系统还可以包括:

分配模块,为处于不同目录等级的云端文件分配不同的文件目录归属标识并在本地端的文件信息中保存,使得处于同一目录等级的云端文件具有相同的文件目录归属标识;

查询模块,当在本地端选中查询第一目录等级时,根据所述第一目录等级对应的文件目录归属标识查询关联的云端文件。

可选的,作为一种可能的实施方式,本申请实施例中的文件云同步系统还可以包括:

设置模块,在每一条本地下载记录中设置文件修改标识,所述文件修改标识用于指示下载到本地的文件是否被修改。

可选的,作为一种可能的实施方式,本申请实施例中的文件云同步系统还可以包括:

第四处理模块,在所述判断所述第一下载记录中的文件属性信息与所述云端存储的第一目标文件的属性信息是否一致之前,根据所述第一下载记录中的文件修改标识判断本地存储的第一目标文件是否被修改;若被修改,则将本地存储的第一目标文件上传至云端。

可选的,作为一种可能的实施方式,本申请实施例中的文件云同步系统还可以包括:

缓存模块,在缓存目录中解压所述第一目标文件,并根据操作指令对缓存目录中的文件进行编辑;

修改模块,在编辑完成之后,在所述第一目标文件对应的本地下载记录中更新文件修改标识,以指示下载到本地的第一目标文件已被修改。

可选的,作为一种可能的实施方式,本申请实施例中的文件云同步系统还可以包括:

第五处理模块,在本地端的第二目标文件被修改后,判断本地已下载的第二目标文件的属性信息是否与所述云端存储的第二目标文件的属性信息是否一致;若不一致,则将本地端存储的所述第二目标文件的云端存储路径修改为新云端存储路径,并按照所述新云端存储路径上传修改后的第二目标文件。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

上面从模块化功能实体的角度对本申请实施例中的数据处理系统进行了描述,请参阅图10,下面从硬件处理的角度对本申请实施例中的电子设备进行描述:

该电子设备1可以包括存储器11、处理器12和输入输出总线13。处理器12执行计算机程序时实现上述图1至图3所示的任一方法实施例中的步骤,例如图1所示的步骤S101至S106。或者,处理器执行计算机程序时实现上述各装置实施例中各模块的功能。

其中,存储器11至少包括一种类型的可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是电子设备1的内部存储单元,例如该电子设备1的硬盘。存储器11在另一些实施例中也可以是电子设备1的外部存储设备,例如电子设备1上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(FlashCard)等。进一步地,存储器11还可以既包括电子设备1的内部存储单元也包括外部存储设备。存储器11不仅可以用于存储安装于电子设备1的应用软件及各类数据,例如计算机程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。

处理器12在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如执行计算机程序等。

该输入输出总线13可以是外设部件互连标准(peripheral componentinterconnect,简称PCI)总线或扩展工业标准结构(extended industry standardarchitecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。

进一步地,电子设备还可以包括有线或无线网络接口14,网络接口14可选的可以包括有线接口和/或无线接口(如WI-FI接口、蓝牙接口等),通常用于在该电子设备1与其他电子设备之间建立通信连接。

图10仅示出了具有组件11-14以及计算机程序的电子设备1,本领域技术人员可以理解的是,图10示出的结构并不构成对电子设备1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。

本申请还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时,可以实现如上述图1至图3所示的任一方法实施例中的步骤,例如图1所示的步骤S101至S106。或者,处理器执行计算机程序时实现上述各装置实施例中各模块的功能。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是在本申请的发明构思下,利用本申请说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的技术领域均包括在本申请的专利保护范围内。

技术分类

06120115686340