具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
如前文所述,相关技术多是通过私有网络库提供的前台上传接口实现文件的上传,如Cronet网络库。Cronet是谷歌开源代码中提供的网络模块,可单独编译成网络库供应用程序使用,由于其功能丰富,代码简洁、稳定、高效,众多互联网公司都基于Cronet开发定制自己的私有网络库。Cronet通常被编译成动态库或者静态库,以库文件的方式供应用程序各组件方调用,来完成应用程序在前台的一些网络请求,包括上传/下载资源文件。但在iOS系统中,无论前台使用何种网络库,一旦应用程序由前台转为后台运行,应用程序将仅能使用iOS指定网络库所提供的后台上传接口进行文件的后台上传,而由于该后台上传接口每次上传都必须从文件或数据的起始位置开始上传,这意味着后台无法直接基于前台的上传进度进行断点续传,并且,后台上传的数据将会覆盖前台上传的数据,这使得前台之前上传的数据失去意义。由此,本公开实施例提供一种文件后台续传方法,该方法旨在描述发送端通过应用程序向接收端上传目标文件的过程,特意说明的是,本实施例中的应用程序具备文件上传功能,在可选的实施例中,还可具有其他业务功能,如视频剪辑功能,例如应用程序可以是“剪映APP”,用户在手机客户端安装“剪映APP”,并通过“剪映APP”向服务器上传视频大文件。发送端可以是搭载有iOS系统的智能手机、平板电脑或其他电子设备,接收端可以是与发送端通信连接的网络节点、服务器或其他电子设备。
图1示出了本公开实施例提供的文件后台续传方法的流程图,请参照图1,该方法包括如下步骤:
S110,在应用程序上传目标文件的过程中,发送端响应于应用程序由前台转为后台运行,向接收端发送针对应用程序前台中断上传的目标数据的第一偏移查询请求。
S120,接收端根据该第一偏移查询请求确定目标数据中的未上传数据对应的偏移范围,获得第一未上传偏移范围,并向发送端返回第一未上传偏移范围。
S130,发送端从目标文件中拷贝第一未上传偏移范围内的数据以生成临时数据,通过操作系统提供的后台上传接口向接收端上传该临时数据。
在上述过程中,当发送端的应用程序切后台后,发送端首先向接收端发送第一偏移查询请求,以查询被应用程序切后台所中断上传的目标数据的未上传数据所对应的偏移范围,接收端在查询后向发送端返回第一未上传偏移范围,然后发送端从目标文件的源文件中拷贝第一未上传偏移范围内的数据,以生成临时数据,然后iOS系统指定的后台上传接口从该临时数据的起始位置开始,向接收端进行临时数据的上传,可以理解的,该临时数据的起始位置即为前台中断上传的中断位置,从而可以达到从前台中断位置续传的效果。因此,本方案可以有效解决由于系统后台上传接口限制,导致应用程序切后台后无法基于前台上传进度进行断点续传的问题,减少由于后台从头开始上传导致的资源和时间的浪费。
可选的,请参照图2,在应用程序处于前台运行的情况下,该方法包括:
S210,发送端响应于针对目标文件的文件上传任务,向接收端发送针对该目标文件的第二偏移查询请求。
S220,接收端根据第二偏移查询请求确定目标文件的未上传数据对应的偏移范围,获得第二未上传偏移范围,并向发送端返回第二未上传偏移范围。
在一种可能的实施方式中,第二偏移查询请求中携带该目标文件对应的第二偏移范围和目标文件的唯一标识。接收端在收到第二偏移查询请求后,根据其中目标文件的唯一标识判断接收端内是否已有目标文件的上传数据;若已有目标文件的上传数据,则确定目标文件的剩余未上传数据对应的偏移范围,将该偏移范围确定为第二未上传偏移范围,若没有目标文件的上传数据,则将目标文件对应的第二偏移范围确定为第二未上传偏移范围,然后向发送端返回第二未上传偏移范围。
需要说明的是,当发送端的应用程序准备向接收端上传目标文件时,目标文件可能是初次上传也可能是非初次上传(例如发送端之前已向接收端上传过目标文件的部分数据),由于发送端本地不会持久化保存上传过的任务情况,发送端并不知晓之前是否上传过目标文件的数据以及上传进度,因此在应用程序处于前台运行时,当获取到针对某一目标文件的文件上传任务后,发送端响应于该文件上传任务,向接收端发送针对该目标文件的第二偏移查询请求,以查询获得该目标文件的未上传数据对应的偏移范围,即第二未上传偏移范围。
S230,发送端根据目标文件的第二未上传偏移范围内的数据确定目标数据,并通过私有网络库提供的前台上传接口向接收端上传目标数据。
在应用程序处于前台运行的情况下,发送端可以通过第三方私有网络库提供的前台上传接口进行数据上传,该前台上传接口并不具有iOS系统的后台上传接口的上述限制,因此可以将目标数据传入该前台上传接口,并通过该前台上传接口直接向接收端进行上传,而不需要进行额外操作。
下文对本公开实施例提供的文件后台续传方法进行详细说明。图3是根据该文件后台续传方法提供的一种具体实施例的流程图,请参照图3,该具体实施例包括如下步骤:
S310,在应用程序处于前台运行的情况下,发送端响应于针对目标文件的文件上传任务,向接收端发送针对该目标文件的第二偏移查询请求。
在应用程序处于前台运行的情况下,当获取到针对某一目标文件的文件上传任务后,发送端响应于针对该目标文件的文件上传任务,向接收端发送针对该目标文件的第二偏移查询请求。其中,该第二偏移查询请求中携带目标文件对应的第二偏移范围和目标文件的唯一标识,该唯一标识可以是目标文件的MD5码。
S320,接收端根据第二偏移查询请求确定第二未上传偏移范围,并向发送端返回第二未上传偏移范围。其中,第二未上传偏移范围表征目标文件的未上传数据对应的偏移范围。
具体的,接收端根据目标文件的唯一标识判断接收端内是否已有目标文件的上传数据,如果接收端内已有目标文件的上传数据,表明发送端之前已针对目标文件上传过数据,那么接收端根据目标文件的剩余未上传数据对应的偏移范围确定第二未上传偏移范围,如果接收端内没有目标文件的上传数据,表明发送端之前未针对目标文件上传过数据,那么接收端将第二偏移查询请求中携带的第二偏移范围确定为第二未上传偏移范围。在确定第二未上传偏移范围后,接收端向发送端返回该第二未上传偏移范围。
示例性的,发送端准备向接收端上传大小为1G的目标文件。首先,发送端向接收端发送针对该目标文件的第二偏移查询请求,第二偏移查询请求中携带目标文件的MD5码和第二偏移范围0~1G。然后,接收端根据目标文件的MD5查找接收端内是否有对应的文件上传数据,若查找到对应的文件上传数据,则根据目标文件的未上传数据在目标文件中的偏移范围确定第二未上传偏移范围,例如目标文件已上传0~500M偏移范围内的数据,则确定第二未上传偏移范围为501M~1G。如果未查找到对应的文件上传数据,则确定第二未上传偏移范围为0~1G。
特意说明的是,此处示出的偏移范围仅是为了举例说明,在实际应用中,本方案中提及的所有偏移范围可以精确到字节。
S330,发送端根据目标文件的第二未上传偏移范围内的数据确定目标数据,并通过私有网络库提供的前台上传接口向接收端上传目标数据。
在一种可能的实施方式中,发送端支持多分片并发上传,以提升上传性能。发送端根据目标文件的第二未上传偏移范围内的数据确定出多个数据分片,每个数据分片作为一个目标数据,发送端通过私有网络库提供的前台上传接口依次或并行向接收端上传该多个数据分片。
例如,当接收端为CDN(Content Delivery Network,内容分发网络)中的网络节点时,通常CDN节点对于上传数据设有长度限制,因此发送端根据接收端对上传数据的最大允许长度,将目标文件的第二未上传偏移范围内的数据分为多个数据分片,发送端通过私有网络库(如Cronet网络库)提供的前台上传接口对多个数据分片进行并发上传或依次上传。或者,发送端也可以动态确定数据分片,发送端首先根据接收端对上传数据的最大允许长度从目标文件的第二未上传偏移范围内的数据中确定出一个数据分片,该数据分片作为一个目标数据,然后通过私有网络库(如Cronet网络库)提供的前台上传接口向接收端上传该数据分片,在该数据分片上传完成后,发送端根据该最大允许长度从目标文件的第二未上传偏移范围内的数据中再确定出一个数据分片,然后通过私有网络库提供的前台上传接口再向接收端上传数据分片,不断重复上述“分片-上传”步骤。
可选的,当目标文件的大小未超过接收端的最大允许长度时,此时不需要对目标文件进行分片,目标文件的第二未上传偏移范围内的数据即为目标数据。
在一种示例中,假设目标文件为初次上传,发送端获得的第二未上传偏移范围为0~1G,发送端根据接收端对上传数据的最大允许长度将目标文件的0~1G范围内的数据分成三个数据分片,每个数据分片作为一个目标数据,其中,目标数据1承载目标文件中偏移范围在0~400M的数据,目标数据2承载目标文件中偏移范围在401M~800M的数据,目标数据3承载目标文件中偏移范围在801M~1G的数据。发送端通过私有网络库提供的前台上传接口并发向接收端上传目标数据1~3。
S340,发送端响应于应用程序由前台转为后台运行,向接收端发送针对应用程序前台中断上传的目标数据的第一偏移查询请求。
S350,接收端根据第一偏移查询请求确定第一未上传偏移范围,并向发送端返回第一未上传偏移范围。其中,第一未上传偏移范围为目标数据中的未上传数据对应的偏移范围。
当应用程序由前台转为后台运行后,前台上传任务中断,从而原本在前台上传的目标数据将中断上传,然后发送端向接收端发送针对应用程序前台中断上传的目标数据的第一偏移查询请求,以从接收端查询该目标数据中的未上传数据对应的偏移范围。如果发送端通过前台上传接口并发向接收端上传多个目标数据,发送端将针对每个目标数据分别发送第一偏移查询请求,以查询每个目标数据的未上传数据对应的偏移范围。其中,第一偏移查询请求中携带目标数据对应的第一偏移范围和目标文件的唯一标识。然后接收端根据目标文件的唯一标识查找到目标文件的文件上传数据,并根据目标数据对应的第一偏移范围从目标文件的文件上传数据中查找该目标数据对应的历史上传数据,从而获得该目标数据的未上传数据所对应的偏移范围,获得第一未上传偏移范围,并向发送端返回第一未上传偏移范围。
以上述目标数据2为例,发送端向接收端发送针对目标数据2的第一偏移查询请求,第一偏移查询请求中携带目标数据2对应的第一偏移范围(即401M~800M)和目标文件的MD5码。接收端根据目标文件的MD5码查找到目标文件的文件上传数据,并根据目标数据2的第一偏移范围401M~800M从目标文件的文件上传数据中查找这一偏移范围内的数据,例如,在应用程序切后台时目标数据2已经上传了401M~550M范围内的数据,于是接收端确定未上传数据的偏移范围为551M~800M,从而确定第一未上传偏移范围为551M~800M,并向发送端返回该第一未上传偏移范围。
S360,发送端从目标文件中拷贝第一未上传偏移范围内的数据以生成临时数据,通过操作系统提供的后台上传接口向接收端上传该临时数据。
发送端从目标文件中拷贝该第一未上传偏移范围内的数据,根据拷贝的数据生成临时数据文件,然后将该临时数据文件传入iOS系统指定的后台上传接口,通过该后台上传接口向接收端上传该临时数据。
在上述步骤S310~S360中,当发送端的应用程序转为后台运行后,首先,发送端向接收端发送第一偏移查询请求,以查询被程序切后台所中断上传的目标数据的未上传数据对应的偏移范围,即第一未上传偏移范围,然后,发送端从目标文件的源文件中拷贝第一未上传偏移范围内的数据,以生成临时数据,iOS系统指定的后台接口从该临时数据的起始位置开始,向接收端上传该临时数据,由于该临时数据的起始位置即为前台中断上传的中断位置,从而达到从前台中断位置续传的效果。
在应用程序从后台切回前台的情况下,请参照图4,该方法还包括:
S410,发送端响应于应用程序由后台转为前台运行,向接收端发送针对应用程序后台中断上传的目标数据的第三偏移查询请求。
S420,接收端根据第三偏移查询请求确定目标数据中的未上传数据对应的偏移范围,获得第三未上传偏移范围,并向发送端返回第三未上传偏移范围。
其中,第三偏移查询请求中携带目标数据对应的第一偏移范围和目标文件的唯一标识。接收端在收到发送端发送的第三偏移查询请求后,根据其中的第一偏移范围和目标文件的唯一标识确定目标数据中的未上传数据对应的偏移范围,获得第三未上传偏移范围,并向发送端返回第三未上传偏移范围。接收端确定第三未上传偏移范围的方式可以参考第一未上传偏移范围的有关描述。
S430,发送端通过私有网络库提供的前台上传接口向接收端上传目标数据中的第三未上传偏移范围内的数据。
当应用程序由后台切回前台的情况下,后台上传任务中断,从而原本在后台上传的目标数据将中断上传,然后发送端向接收端发送针对当前目标数据的第三偏移查询请求,以从接收端查询该目标数据的未上传数据对应的偏移范围,即第三未上传偏移范围。在获得第三未上传偏移范围后,由于应用程序正在前台运行,且前台上传接口支持基于文件偏移上传,因此发送端可以通过前台上传接口直接从后台中断位置继续上传目标数据的未上传部分。
进一步的,在上述步骤中,如果发送端在应用程序在切后台后立刻向接收端发送针对目标数据的第一偏移查询请求并根据接收端返回的第一未上传偏移范围拷贝临时数据,一旦应用程序在较短时间内又切回前台,发送端将立刻转为通过私有网络库的前台上传接口继续上传,那么之前所拷贝的临时数据将没有意义,尤其在拷贝的临时数据较多的情况下,还会严重影响发送端的性能。因此,发送端在检测到应用程序由前台转为后台运行时,先暂不向接收端发送针对目标数据的第一偏移查询请求,而是先等待预设的延时时间,如果在预设的延时时间内应用程序切回前台,则发送端将通过私有网络库的前台上传接口继续向接收端上传目标数据,如果在预设的延时时间结束时应用程序仍未切回前台,则发送端才向接收端发送针对应用程序前台中断上传的目标数据的第一偏移查询请求。
其中,预设的延时时间可以自由灵活配置,例如设置为15秒。
对于应用程序在切后台后可能在短时间内切回前台的场景,为改善拷贝操作给发送端所带来的性能影响,在发送端从目标文件中拷贝获得临时数据并向接收端上传临时数据的过程中,发送端重复执行“根据预设拷贝大小从目标文件的第一未上传偏移范围内的未拷贝数据中拷贝数据,根据本次拷贝的数据生成本次临时数据,通过操作系统提供的后台上传接口向接收端上传该本次临时数据”的过程,直至第一未上传偏移范围内的数据均已上传或者应用程序由后台转为前台运行。
例如,发送端预先配置的拷贝大小为10M,发送端先从目标文件的第一未上传偏移范围内拷贝出10M数据,获得本次临时数据,发送端通过操作系统提供的后台上传接口向接收端上传本次临时数据,在10M的本次临时数据上传完成后,发送端再从第一未上传偏移范围的剩余未拷贝数据中继续拷贝出10M数据,获得本次临时数据,并通过操作系统提供的后台上传接口向接收端上传本次临时数据,不断重复上述“拷贝-上传”过程,直至第一未上传偏移范围内的数据均已拷贝并上传完成或者应用程序切回前台。需要注意的是,当最终剩余的未拷贝数据的大小小于10M时,直接拷贝剩余的未拷贝数据以获得本次临时数据。由于是分多次拷贝上传,且每次只拷贝小范围的数据进行上传,可以避免应用程序短时间内切回前台而产生的资源浪费,同时减少一次性拷贝较大数据对设备性能造成的影响。
综上所述,本技术方案以基于偏移的文件碎片拷贝方式,解决了由于系统后台上传接口限制,无法和Cronet网络库(或其他三方网络库)兼容实现断点续传的问题,达到后台基于前台上传进度断点续传的目的,解决了iOS系统上跨网络库无法直接断点续传文件的难题。需要说明的是,在本公开实施例提供的上述文件后台续传方法中,私有网络库包括但不限于上述列举的Cronet网络库,也可能是使用的其他第三方网络库,即应用程序前台上传时不一定使用Cronet网络库,使用其他可运行在iOS系统上的第三方网络库仍然可以达到相同效果。
基于同一构思,本公开实施例提供一种文件后台续传装置,该装置配置于文件上传的发送端,请参照图5,装置500包括:第一偏移请求发送模块510、第一偏移范围获取模块520和数据拷贝上传模块530。
第一偏移请求发送模块510,用于在应用程序上传目标文件的过程中,响应于所述应用程序由前台转为后台运行,向接收端发送针对所述应用程序前台中断上传的目标数据的第一偏移查询请求。
第一偏移范围获取模块520,用于获取所述接收端根据所述第一偏移查询请求返回的第一未上传偏移范围,所述第一未上传偏移范围为所述目标数据中的未上传数据对应的偏移范围。
数据拷贝上传模块530,用于从所述目标文件中拷贝所述第一未上传偏移范围内的数据以生成临时数据,通过操作系统提供的后台上传接口向所述接收端上传所述临时数据。
可选的,数据拷贝上传模块530用于重复执行根据预设拷贝大小从所述目标文件的第一未上传偏移范围内的未拷贝数据中拷贝数据,根据本次拷贝的数据生成本次临时数据,通过操作系统提供的后台上传接口向所述接收端上传所述本次临时数据,直至所述第一未上传偏移范围内的数据均已上传或者所述应用程序由后台转为前台运行。
可选的,第一偏移请求发送模块510用于在检测到所述应用程序由前台转为后台运行时,等待预设的延时时间,并在所述预设的延时时间结束时所述应用程序未转为前台运行的情况下,向接收端发送针对所述应用程序前台中断上传的目标数据的第一偏移查询请求。
可选的,该装置还包括:
第二偏移请求发送模块,用于在所述应用程序处于前台运行的情况下,响应于针对所述目标文件的文件上传任务,向所述接收端发送针对所述目标文件的第二偏移查询请求;
第二偏移范围获取模块,用于获取所述接收端根据所述第二偏移查询请求返回的第二未上传偏移范围,所述第二未上传偏移范围为所述目标文件的未上传数据对应的偏移范围;
第一前台上传模块,用于根据所述目标文件的所述第二未上传偏移范围内的数据确定目标数据,并通过私有网络库提供的前台上传接口向所述接收端上传所述目标数据。
可选的,该装置还包括:
第三偏移请求发送模块,用于在通过操作系统提供的后台上传接口向所述接收端上传所述临时数据之后,响应于所述应用程序由后台转为前台运行,向接收端发送针对所述应用程序后台中断上传的所述目标数据的第三偏移查询请求;
第三偏移范围获取模块,用于获取所述接收端根据所述第三偏移查询请求返回的第三未上传偏移范围,所述第三未上传偏移范围为所述目标数据中的未上传数据对应的偏移范围;
第二前台上传模块,用于通过所述私有网络库提供的所述前台上传接口向所述接收端上传所述目标数据中的所述第三未上传偏移范围内的数据。
基于同一构思,本公开实施例提供一种文件后台续传装置,该装置配置于文件上传的接收端,请参照图6,装置600包括:第一偏移请求获取模块610、第一偏移范围查询模块620和后台数据接收模块630。
第一偏移请求获取模块610,用于在接收发送端的应用程序上传的目标文件的过程中,获取所述发送端响应于所述应用程序由前台转为后台运行所发送的针对所述应用程序前台中断上传的目标数据的第一偏移查询请求。
第一偏移范围查询模块620,用于根据所述第一偏移查询请求确定所述目标数据中的未上传数据对应的偏移范围,获得第一未上传偏移范围,并向所述发送端返回所述第一未上传偏移范围。
后台数据接收模块630,用于接收所述发送端通过操作系统提供的后台上传接口上传的临时数据;其中,所述临时数据是所述发送端从所述目标文件中拷贝所述第一未上传偏移范围内的数据后,根据拷贝数据生成。
可选的,该装置还包括:
第二偏移请求获取模块,用于获取所述发送端在所述应用程序处于前台运行的情况下,响应于针对所述目标文件的文件上传任务所发送的第二偏移查询请求;
第二偏移范围查询模块,用于根据所述第二偏移查询请求确定所述目标文件的未上传数据对应的偏移范围,获得第二未上传偏移范围,并向所述发送端返回所述第二未上传偏移范围;
第一前台数据接收模块,用于获取所述发送端通过私有网络库提供的前台上传接口上传的目标数据;其中,所述目标数据是所述发送端根据所述目标文件的所述第二未上传偏移范围内的数据确定。
可选的,该装置还包括:
第三偏移请求获取模块,用于在接收所述发送端通过操作系统提供的后台上传接口上传的临时数据之后,获取所述发送端响应于所述应用程序由后台转为前台运行所发送的针对所述应用程序后台中断上传的所述目标数据的第三偏移查询请求;
第三偏移范围获取模块,用于根据所述第三偏移查询请求确定所述目标数据中的未上传数据对应的偏移范围,获得第三未上传偏移范围,并向所述发送端返回所述第三未上传偏移范围;
第二前台数据接收模块,用于获取所述发送端通过所述私有网络库提供的所述前台上传接口上传的所述目标数据中的所述第三未上传偏移范围内的数据。
基于同一构思,本公开实施例提供一种计算机可读介质,其上存储有计算机程序,该程序被处理装置执行时实现前述实施例提供的文件后台续传方法中发送端或接收端所执行的步骤。
基于同一构思,本公开实施例提供一种电子设备,包括:
存储装置,其上存储有一个或多个计算机程序;
一个或多个处理装置,用于执行所述存储装置中的所述一个或多个计算机程序,以实现前述实施例提供的文件后台续传方法中发送端或接收端所执行的步骤。
其中,当电子设备为文件上传的发送端时,如电子设备为搭载有iOS系统的智能手机、平板电脑或其他电子设备,则一个或多个处理装置执行存储装置中的一个或多个计算机程序,以实现前述实施例提供的文件后台续传方法中发送端所执行的步骤;当电子设备为文件上传的接收端时,如电子设备为CDN节点、服务器或其他电子设备时,则一个或多个处理装置执行存储装置中的一个或多个计算机程序,以实现前述实施例提供的文件后台续传方法中接收端所执行的步骤
下面参考图7,其示出了适于用来实现本公开实施例的电子设备(例如发送端设备或接收端设备)700的结构示意图。图7示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。如图7所示,电子设备700可以包括处理装置(例如中央处理器、图形处理器等)701,其可以根据存储在只读存储器(ROM)702中的程序或者从存储装置708加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。在RAM703中,还存储有电子设备700操作所需的各种程序和数据。处理装置701、ROM 702以及RAM703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
通常,以下装置可以连接至I/O接口705:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置706;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置707;包括例如磁带、硬盘等的存储装置708;以及通信装置709。通信装置709可以允许电子设备700与其他设备进行无线或有线通信以交换数据。虽然图7示出了具有各种装置的电子设备700,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置709从网络上被下载和安装,或者从存储装置708被安装,或者从ROM 702被安装。在该计算机程序被处理装置701执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
在一些实施方式中,发送端、接收端可以利用诸如HTTP(HyperTextTransferProtocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:在应用程序上传目标文件的过程中,响应于所述应用程序由前台转为后台运行,向接收端发送针对所述应用程序前台中断上传的目标数据的第一偏移查询请求;获取所述接收端根据所述第一偏移查询请求返回的第一未上传偏移范围,所述第一未上传偏移范围为所述目标数据中的未上传数据对应的偏移范围;从所述目标文件中拷贝所述第一未上传偏移范围内的数据以生成临时数据,通过操作系统提供的后台上传接口向所述接收端上传所述临时数据。
或者,上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:在接收发送端的应用程序上传的目标文件的过程中,获取所述发送端响应于所述应用程序由前台转为后台运行所发送的针对所述应用程序前台中断上传的目标数据的第一偏移查询请求;根据所述第一偏移查询请求确定所述目标数据中的未上传数据对应的偏移范围,获得第一未上传偏移范围,并向所述发送端返回所述第一未上传偏移范围;接收所述发送端通过操作系统提供的后台上传接口上传的临时数据;其中,所述临时数据是所述发送端从所述目标文件中拷贝所述第一未上传偏移范围内的数据后,根据拷贝数据生成。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言——诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,模块的名称在某种情况下并不构成对该模块本身的限定,例如,第一偏移请求发送模块还可以被描述为“向接收端发送针对应用程序前台中断上传的目标数据的第一偏移查询请求的模块”。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
根据本公开的一个或多个实施例,示例1提供了一种文件后台续传方法,应用于发送端,包括:
在应用程序上传目标文件的过程中,响应于所述应用程序由前台转为后台运行,向接收端发送针对所述应用程序前台中断上传的目标数据的第一偏移查询请求;
获取所述接收端根据所述第一偏移查询请求返回的第一未上传偏移范围,所述第一未上传偏移范围为所述目标数据中的未上传数据对应的偏移范围;
从所述目标文件中拷贝所述第一未上传偏移范围内的数据以生成临时数据,通过操作系统提供的后台上传接口向所述接收端上传所述临时数据。
根据本公开的一个或多个实施例,示例2提供了示例1的方法,所述从所述目标文件中拷贝所述第一未上传偏移范围内的数据以生成临时数据,通过操作系统提供的后台上传接口向所述接收端上传所述临时数据,包括:
重复执行根据预设拷贝大小从所述目标文件的第一未上传偏移范围内的未拷贝数据中拷贝数据,根据本次拷贝的数据生成本次临时数据,通过操作系统提供的后台上传接口向所述接收端上传所述本次临时数据,直至所述第一未上传偏移范围内的数据均已上传或者所述应用程序由后台转为前台运行。
根据本公开的一个或多个实施例,示例3提供了示例1的方法,所述响应于所述应用程序由前台转为后台运行,向接收端发送针对所述应用程序前台中断上传的目标数据的第一偏移查询请求,包括:
在检测到所述应用程序由前台转为后台运行时,等待预设的延时时间,并在所述预设的延时时间结束时所述应用程序未转为前台运行的情况下,向接收端发送针对所述应用程序前台中断上传的目标数据的第一偏移查询请求。
根据本公开的一个或多个实施例,示例4提供了示例1的方法,还包括:
在所述应用程序处于前台运行的情况下,响应于针对所述目标文件的文件上传任务,向所述接收端发送针对所述目标文件的第二偏移查询请求;
获取所述接收端根据所述第二偏移查询请求返回的第二未上传偏移范围,所述第二未上传偏移范围为所述目标文件的未上传数据对应的偏移范围;
根据所述目标文件的所述第二未上传偏移范围内的数据确定目标数据,并通过私有网络库提供的前台上传接口向所述接收端上传所述目标数据。
根据本公开的一个或多个实施例,示例5提供了示例4的方法,还包括:
在通过操作系统提供的后台上传接口向所述接收端上传所述临时数据之后,响应于所述应用程序由后台转为前台运行,向接收端发送针对所述应用程序后台中断上传的所述目标数据的第三偏移查询请求;
获取所述接收端根据所述第三偏移查询请求返回的第三未上传偏移范围,所述第三未上传偏移范围为所述目标数据中的未上传数据对应的偏移范围;
通过所述私有网络库提供的所述前台上传接口向所述接收端上传所述目标数据中的所述第三未上传偏移范围内的数据。
根据本公开的一个或多个实施例,示例6提供了一种文件后台续传方法,应用于接收端,包括:
在接收发送端的应用程序上传的目标文件的过程中,获取所述发送端响应于所述应用程序由前台转为后台运行所发送的针对所述应用程序前台中断上传的目标数据的第一偏移查询请求;
根据所述第一偏移查询请求确定所述目标数据中的未上传数据对应的偏移范围,获得第一未上传偏移范围,并向所述发送端返回所述第一未上传偏移范围;
接收所述发送端通过操作系统提供的后台上传接口上传的临时数据;其中,所述临时数据是所述发送端从所述目标文件中拷贝所述第一未上传偏移范围内的数据后,根据拷贝数据生成。
根据本公开的一个或多个实施例,示例7提供了示例6的方法,还包括:
获取所述发送端在所述应用程序处于前台运行的情况下,响应于针对所述目标文件的文件上传任务所发送的第二偏移查询请求;
根据所述第二偏移查询请求确定所述目标文件的未上传数据对应的偏移范围,获得第二未上传偏移范围,并向所述发送端返回所述第二未上传偏移范围;
获取所述发送端通过私有网络库提供的前台上传接口上传的目标数据;其中,所述目标数据是所述发送端根据所述目标文件的所述第二未上传偏移范围内的数据确定。
根据本公开的一个或多个实施例,示例8提供了示例7的方法,还包括:
在接收所述发送端通过操作系统提供的后台上传接口上传的临时数据之后,获取所述发送端响应于所述应用程序由后台转为前台运行所发送的针对所述应用程序后台中断上传的所述目标数据的第三偏移查询请求;
根据所述第三偏移查询请求确定所述目标数据中的未上传数据对应的偏移范围,获得第三未上传偏移范围,并向所述发送端返回所述第三未上传偏移范围;
获取所述发送端通过所述私有网络库提供的所述前台上传接口上传的所述目标数据中的所述第三未上传偏移范围内的数据。
根据本公开的一个或多个实施例,示例9提供了一种文件后台续传装置,配置于发送端,包括:
第一偏移请求发送模块,用于在应用程序上传目标文件的过程中,响应于所述应用程序由前台转为后台运行,向接收端发送针对所述应用程序前台中断上传的目标数据的第一偏移查询请求;
第一偏移范围获取模块,用于获取所述接收端根据所述第一偏移查询请求返回的第一未上传偏移范围,所述第一未上传偏移范围为所述目标数据中的未上传数据对应的偏移范围;
数据拷贝上传模块,用于从所述目标文件中拷贝所述第一未上传偏移范围内的数据以生成临时数据,通过操作系统提供的后台上传接口向所述接收端上传所述临时数据。
根据本公开的一个或多个实施例,示例10提供了示例9的装置,数据拷贝上传模块用于重复执行根据预设拷贝大小从所述目标文件的第一未上传偏移范围内的未拷贝数据中拷贝数据,根据本次拷贝的数据生成本次临时数据,通过操作系统提供的后台上传接口向所述接收端上传所述本次临时数据,直至所述第一未上传偏移范围内的数据均已上传或者所述应用程序由后台转为前台运行。
根据本公开的一个或多个实施例,示例11提供了示例9的装置,第一偏移请求发送模块用于在检测到所述应用程序由前台转为后台运行时,等待预设的延时时间,并在所述预设的延时时间结束时所述应用程序未转为前台运行的情况下,向接收端发送针对所述应用程序前台中断上传的目标数据的第一偏移查询请求。
根据本公开的一个或多个实施例,示例12提供了示例9的装置,还包括:
第二偏移请求发送模块,用于在所述应用程序处于前台运行的情况下,响应于针对所述目标文件的文件上传任务,向所述接收端发送针对所述目标文件的第二偏移查询请求;
第二偏移范围获取模块,用于获取所述接收端根据所述第二偏移查询请求返回的第二未上传偏移范围,所述第二未上传偏移范围为所述目标文件的未上传数据对应的偏移范围;
第一前台上传模块,用于根据所述目标文件的所述第二未上传偏移范围内的数据确定目标数据,并通过私有网络库提供的前台上传接口向所述接收端上传所述目标数据。
根据本公开的一个或多个实施例,示例13提供了示例12的装置,还包括:
第三偏移请求发送模块,用于在通过操作系统提供的后台上传接口向所述接收端上传所述临时数据之后,响应于所述应用程序由后台转为前台运行,向接收端发送针对所述应用程序后台中断上传的所述目标数据的第三偏移查询请求;
第三偏移范围获取模块,用于获取所述接收端根据所述第三偏移查询请求返回的第三未上传偏移范围,所述第三未上传偏移范围为所述目标数据中的未上传数据对应的偏移范围;
第二前台上传模块,用于通过所述私有网络库提供的所述前台上传接口向所述接收端上传所述目标数据中的所述第三未上传偏移范围内的数据。
根据本公开的一个或多个实施例,示例14提供了一种文件后台续传装置,配置于接收端,包括:
第一偏移请求获取模块,用于在接收发送端的应用程序上传的目标文件的过程中,获取所述发送端响应于所述应用程序由前台转为后台运行所发送的针对所述应用程序前台中断上传的目标数据的第一偏移查询请求;
第一偏移范围查询模块,用于根据所述第一偏移查询请求确定所述目标数据中的未上传数据对应的偏移范围,获得第一未上传偏移范围,并向所述发送端返回所述第一未上传偏移范围;
后台数据接收模块,用于接收所述发送端通过操作系统提供的后台上传接口上传的临时数据;其中,所述临时数据是所述发送端从所述目标文件中拷贝所述第一未上传偏移范围内的数据后,根据拷贝数据生成。
根据本公开的一个或多个实施例,示例15提供了示例14的装置,还包括:
第二偏移请求获取模块,用于获取所述发送端在所述应用程序处于前台运行的情况下,响应于针对所述目标文件的文件上传任务所发送的第二偏移查询请求;
第二偏移范围查询模块,用于根据所述第二偏移查询请求确定所述目标文件的未上传数据对应的偏移范围,获得第二未上传偏移范围,并向所述发送端返回所述第二未上传偏移范围;
第一前台数据接收模块,用于获取所述发送端通过私有网络库提供的前台上传接口上传的目标数据;其中,所述目标数据是所述发送端根据所述目标文件的所述第二未上传偏移范围内的数据确定。
根据本公开的一个或多个实施例,示例16提供了示例15的装置,还包括:
第三偏移请求获取模块,用于在接收所述发送端通过操作系统提供的后台上传接口上传的临时数据之后,获取所述发送端响应于所述应用程序由后台转为前台运行所发送的针对所述应用程序后台中断上传的所述目标数据的第三偏移查询请求;
第三偏移范围获取模块,用于根据所述第三偏移查询请求确定所述目标数据中的未上传数据对应的偏移范围,获得第三未上传偏移范围,并向所述发送端返回所述第三未上传偏移范围;
第二前台数据接收模块,用于获取所述发送端通过所述私有网络库提供的所述前台上传接口上传的所述目标数据中的所述第三未上传偏移范围内的数据。
根据本公开的一个或多个实施例,示例17提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理装置执行时实现示例1-5中的任一示例或示例6-8中的任一示例所述的方法。
根据本公开的一个或多个实施例,示例18提供了一种电子设备,包括:
存储装置,其上存储有一个或多个计算机程序;
一个或多个处理装置,用于执行所述存储装置中的所述一个或多个计算机程序,以实现示例1-5中的任一示例或示例6-8中的任一示例所述的方法。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。