CN103595769B - Sdk实现文件上传的方法与装置 - Google Patents
Sdk实现文件上传的方法与装置 Download PDFInfo
- Publication number
- CN103595769B CN103595769B CN201310522159.5A CN201310522159A CN103595769B CN 103595769 B CN103595769 B CN 103595769B CN 201310522159 A CN201310522159 A CN 201310522159A CN 103595769 B CN103595769 B CN 103595769B
- Authority
- CN
- China
- Prior art keywords
- file
- upload
- interface
- uploaded
- files passe
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 73
- 230000006870 function Effects 0.000 claims abstract description 159
- 206010008190 Cerebrovascular accident Diseases 0.000 claims description 36
- 208000006011 Stroke Diseases 0.000 claims description 36
- 238000005538 encapsulation Methods 0.000 claims description 26
- 230000008569 process Effects 0.000 claims description 23
- 230000005540 biological transmission Effects 0.000 claims description 13
- 238000012546 transfer Methods 0.000 claims description 8
- 238000011161 development Methods 0.000 abstract description 26
- 230000007547 defect Effects 0.000 abstract description 7
- 239000000203 mixture Substances 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 230000007613 environmental effect Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 3
- 238000013480 data collection Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 235000014510 cooky Nutrition 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001035 drying Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004899 motility Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
Abstract
本发明提供了一种SDK实现文件上传的方法与装置,其中,SDK应用于云存储系统,SDK实现文件上传的方法包括:接收文件上传指令,获取待上传文件的信息及上传所述待上传文件的统一上下文环境;通过上传接口中设定的应用回调信息类中的成员变量,调用所述上传接口中封装的多个文件上传函数,使所述多个文件上传函数根据所述待上传文件的信息,使用所述统一上下文环境进行所述待上传的文件的上传。通过本发明,大幅减少了开发人员的开发难度和提高了开发效率和开发质量,加快了开发速度,降低了开发成本,有效避免了开发缺陷。
Description
技术领域
本发明涉及通信技术领域,特别是涉及一种基于Android系统的SDK(SoftwareDevelopment Kit,软件开发工具包)实现文件上传的方法与装置。
背景技术
SDK是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等创建应用软件的开发工具的集合,它可以简单地为某个程序设计语言提供API(Application Programming Interface,应用程序编程接口)的一些文件,但也可能包括能与某种嵌入式系统通讯的复杂的硬件。
随着云存储技术的发展,SDK越来越多地被用于开发与云存储相关的应用中。云存储通过集群应用、网格技术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能。目前,云存储提供的最常用的业务访问功能包括数据上传和下载。开发人员在使用现有的SDK进行云存储的上传任务和下载任务的开发时,不但需要熟悉上传和下载所使用的各个SDK的接口的实现方式和功能,更需要熟悉上传和下载的各个任务环节,并能够正确选择各个任务环节所使用的API接口。
但是,这种开发方式一方面对开发人员要求较高,造成开发困难,开发速度慢,开发成本高;另一方面,可能因为API接口选择的不恰当,造成开发出的任务效率低下,缺陷较多,需要后续不断进行版本升级和改进。
发明内容
鉴于上述现有的SDK实现文件上传时,开发速度慢,开发成本高,效率低下,缺陷较多的问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的SDK实现文件上传的方法与装置。
依据本发明的一个方面,提供了一种SDK实现文件上传的方法,所述SDK应用于云存储系统,所述方法包括:接收文件上传指令,获取待上传文件的信息及上传所述待上传文件的统一上下文环境;通过上传接口中设定的应用回调信息类中的成员变量,调用所述上传接口中封装的多个文件上传函数,使所述多个文件上传函数根据所述待上传文件的信息,使用所述统一上下文环境进行所述待上传的文件的上传。
可选地,所述多个文件上传函数通过以下方式预先封装在所述上传接口中:对所述云存储系统的文件上传流程进行分析,从所有文件上传函数中获取完成文件上传任务的基本函数;将所述基本函数抽象为所述应用回调信息类,并根据所述基本函数定义所述应用回调信息类中的成员变量;使用所述成员变量在所述基本函数间传递参数,并按照所述文件上传流程确定所述基本函数的调用顺序;将所述应用回调信息类和确定了调用顺序的所述基本函数封装成所述上传接口。
可选地,所述上传接口中还封装有上传线程参数;在所述通过上传接口中设定的应用回调信息类中的成员变量,调用所述上传接口中封装的多个文件上传函数的步骤之前,还包括:接收上传线程参数设置指令,根据所述上传线程参数设置指令设置的上传线程参数,启动所述上传线程参数指示数量的上传线程进行所述待上传的文件的上传。
可选地,所述通过上传接口中设定的应用回调信息类中的成员变量,调用所述上传接口中封装的多个文件上传函数的步骤包括:所述上传接口通过使用设定的应用回调信息类中的成员变量以及句柄参数,调用所述上传接口中封装的多个文件上传函数;其中,所述句柄参数用于在所述多个文件上传函数之间传达消息。
可选地,所述上传接口中还封装有文件秒传函数;在所述接收文件上传指令,获取待上传文件的信息及上传所述待上传文件的统一上下文环境的步骤之后,还包括:调用所述文件秒传函数根据所述待上传文件的信息,判断所述待上传文件在云存储端是否已存在;若所述待上传文件在云存储端已存在,则建立所述用户的用户标识与已存在的文件之间的链接。
根据本发明的另一方面,提供了一种SDK实现文件上传的装置,所述SDK应用于云存储系统,所述装置包括:获取模块,用于接收文件上传指令,获取待上传文件的信息及上传所述待上传文件的统一上下文环境;上传模块,用于通过上传接口中设定的应用回调信息类中的成员变量,调用所述上传接口中封装的多个文件上传函数,使所述多个文件上传函数根据所述待上传文件的信息,使用所述统一上下文环境进行所述待上传的文件的上传。
可选地,所述装置还包括:封装模块,用于将所述多个文件上传函数通过以下方式预先封装在所述上传接口中:对所述云存储系统的文件上传流程进行分析,从所有文件上传函数中获取完成文件上传任务的基本函数;将所述基本函数抽象为所述应用回调信息类,并根据所述基本函数定义所述应用回调信息类中的成员变量;使用所述成员变量在所述基本函数间传递参数,并按照所述文件上传流程确定所述基本函数的调用顺序;将所述应用回调信息类和确定了调用顺序的所述基本函数封装成所述上传接口。
可选地,所述上传接口中还封装有上传线程参数;所述装置还包括:线程设置模块,用于在所述上传模块通过上传接口中设定的应用回调信息类中的成员变量,调用所述上传接口中封装的多个文件上传函数之前,接收上传线程参数设置指令,根据所述上传线程参数设置指令设置的上传线程参数,启动所述上传线程参数指示数量的上传线程进行所述待上传的文件的上传。
可选地,所述上传模块在通过上传接口中设定的应用回调信息类中的成员变量,调用所述上传接口中封装的多个文件上传函数时:由所述上传接口通过使用设定的应用回调信息类中的成员变量以及句柄参数,调用所述上传接口中封装的多个文件上传函数;其中,所述句柄参数用于在所述多个文件上传函数之间传达消息。
可选地,所述上传接口中还封装有文件秒传函数;所述装置还包括:秒传模块,用于在所述获取模块接收文件上传指令,获取待上传文件的信息及上传所述待上传文件的统一上下文环境之后,调用所述文件秒传函数根据所述待上传文件的信息,判断所述待上传文件在云存储端是否已存在;若所述待上传文件在云存储端已存在,则建立所述用户的用户标识与已存在的文件之间的链接。
本申请中,SDK的上传接口提供了较好的对外合作机制,该上传接口通过对云存储端上传文件的方法进行抽象和封装,生成具有应用回调信息类中的成员变量和多个文件上传函数。在使用该SDK进行文件上传时,一次性获取上传待上传文件的统一上下文环境,在该统一上下文环境下,通过上传接口中的应用回调信息类中的成员变量调用文件上传函数,即可实现文件上传,无需开发人员熟悉上传文件所使用的各个SDK的接口的实现方式和功能,也无需开发人员熟悉上传文件的各个任务环节和各个任务环节所使用的API接口,从而大幅减少了开发人员的开发难度和提高了开发效率和开发质量,加快了开发速度,降低了开发成本,有效避免了开发缺陷。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是根据本发明实施例一的一种SDK实现文件上传的方法的步骤流程图;
图2是根据本发明实施例二的一种SDK实现文件上传的方法的步骤流程图;
图3是根据本发明实施例三的一种SDK实现文件上传的方法的步骤流程图;
图4是根据本发明实施例四的一种SDK实现文件上传的装置的结构框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
实施例一
参照图1,示出了根据本发明实施例一的一种SDK实现文件上传的方法的步骤流程图。
本实施例的SDK实现文件上传的方法应用于云存储系统,该方法包括以下步骤:
步骤S102:接收文件上传指令,获取待上传文件的信息及上传待上传文件的统一上下文环境。
当有文件需要上传时,上传文件的设备如客户端会向云存储端服务器发送文件上传指令,接收到该指令后,云存储端服务器从相应的设备如客户端获取待上传文件的信息,如待上传文件所在的位置,文件大小、待上传的位置等等有待上传的文件相关的信息。更重要的是,云存储端服务器还会从上传文件的设备中获取上传待上传文件的统一上下文环境。与传统上传文件时,每调用一个函数或接口需要获取一次上下文环境不同,该统一上下文环境仅需一次获取,并在后续该待上传文件的所有上传过程中使用。
步骤S104:通过上传接口中设定的应用回调信息类中的成员变量,调用上传接口中封装的多个文件上传函数,使多个文件上传函数根据待上传文件的信息,使用统一上下文环境进行所述待上传的文件的上传。
上传接口中的应用回调信息类中的成员变量和多个文件上传函数为对云存储系统的文件上传流程进行分析后确定,可以仅包括实现文件上传功能的基本函数(也即核心函数,基本函数中的任何一个缺少都不能够完成文件上传功能),而其它功能函数则可排除在外,如,文件上传进度显示函数、界面提示函数等等不影响文件上传功能的函数都可排除在外。
应用回调信息类中的成员变量可以将多个文件上传函数按照文件上传任务的执行顺序连接起来,在获取的统一上下文环境中依次执行,实现文件的上传。如上所述,各个文件上传函数在执行时,均使用已获取的统一上下文环境,无需分别逐次获取。
通过本实施例,SDK的上传接口提供了较好的对外合作机制,该上传接口通过对云存储端上传文件的方法进行抽象和封装,生成具有应用回调信息类中的成员变量和多个文件上传函数。在使用该SDK进行文件上传时,一次性获取上传待上传文件的统一上下文环境,在该统一上下文环境下,通过上传接口中的应用回调信息类中的成员变量调用文件上传函数,即可实现文件上传,无需开发人员熟悉上传文件所使用的各个SDK的接口的实现方式和功能,也无需开发人员熟悉上传文件的各个任务环节和各个任务环节所使用的API接口,从而大幅减少了开发人员的开发难度和提高了开发效率和开发质量,加快了开发速度,降低了开发成本,有效避免了开发缺陷。
实施例二
参照图2,示出了根据本发明实施例二的一种SDK实现文件上传的方法的步骤流程图。
本实施例的SDK实现文件上传的方法应用于云存储系统,该方法包括以下步骤:
步骤S202:封装SDK的上传接口。
本实施例中,一种优选的封装SDK上传接口的方式包括:对云存储系统的文件上传流程进行分析,从所有文件上传函数中获取完成文件上传任务的基本函数;将基本函数抽象为应用回调信息类,并根据基本函数定义应用回调信息类中的成员变量;使用成员变量在基本函数间传递参数,并按照文件上传流程确定基本函数的调用顺序;将应用回调信息类和确定了调用顺序的基本函数封装成SDK的上传接口。
上述对云存储系统的文件上传流程进行分析,从所有文件上传函数中获取完成文件上传任务的基本函数,以及,将基本函数抽象为应用回调信息类,并根据基本函数定义应用回调信息类中的成员变量的过程在实际操作中,可以由本领域技术人员人工完成,也可以采用成熟的人工智能模型实现,当然,其它可行的适当方式也同样适用。
在一个优选实施例中,SDK的上传接口中还封装了上传线程参数,该上传线程参数用于指示上传所述待上传文件时使用的线程数量。通过上传线程参数,可以灵活地对上传文件的线程数量进行设置,提高文件上传的灵活性。
步骤S204:SDK接收文件上传指令,获取待上传文件的信息及上传所述待上传文件的统一上下文环境。
该统一上下文环境在本实施例的后续文件上传过程中一直使用。
步骤S206:SDK通过上传接口中设定的应用回调信息类中的成员变量,调用上传接口中封装的多个文件上传函数。
优选地,当SDK的上传接口中封装有上传线程参数时,在通过上传接口中设定的应用回调信息类中的成员变量,调用上传接口中封装的多个文件上传函数的步骤之前,还包括:接收上传线程参数设置指令,根据上传线程参数设置指令设置的上传线程参数,启动上传线程参数指示数量的上传线程进行待上传的文件的上传。如,上传线程参数设置指令中的上传线程参数指示使用5个线程进行文件上传,则SDK上传接口会启动5个线程接收待上传文件的文件数据块进而进行上传。其中,上传线程参数设置指令可以由上传文件的设备针对每个待上传的文件设置并发送,也可以采用默认的设置值,发送给SDK。
在一个优选实施例中,上传接口通过使用设定的应用回调信息类中的成员变量以及句柄参数,调用上传接口中封装的多个文件上传函数;其中,所述句柄参数用于在多个文件上传函数之间传达消息。
步骤S208:SDK使用多个文件上传函数根据待上传文件的信息,使用统一上下文环境进行待上传的文件的上传。
在本发明的一个优选实施例中,上传接口中还封装有文件秒传函数。当上传接口中封装有文件秒传函数时,在接收文件上传指令,获取待上传文件的信息及上传待上传文件的统一上下文环境的步骤之后,还包括:调用文件秒传函数根据待上传文件的信息,判断待上传文件在云存储端是否已存在;若待上传文件在云存储端已存在,则建立用户的用户标识与已存在的文件之间的链接;若不存在,则执行步骤S206。
通过本实施例,在使用SDK进行文件上传时,一次性获取上传待上传文件的统一上下文环境,在该统一上下文环境下,通过上传接口中的应用回调信息类中的成员变量调用文件上传函数,即可实现文件上传,无需开发人员熟悉上传文件所使用的各个SDK的接口的实现方式和功能,也无需开发人员熟悉上传文件的各个任务环节和各个任务环节所使用的API接口,从而大幅减少了开发人员的开发难度和提高了开发效率和开发质量,加快了开发速度,降低了开发成本,有效避免了开发缺陷。
实施例三
本实施例以具体实例对本发明的SDK实现文件上传的方法进行说明,该方法应用于云存储系统。
本实施例的SDK实现文件上传的方法包括以下步骤:
步骤一:生成SDK的上传接口。
以下,从多个方面对生成SDK的上传接口的过程进行说明。
(一)软件环境需求:
a、开发环境:android2.1及2.1以上;
b、需要的权限:至少包括生成SDK所需要进行的访问的权限,以android应用的权限配置为例,如:
<uses-permission android:name="android.permission.INTERNET"/>
//访问INTERNET的权限
<uses-permission android:name=
"android.permission.WRITE_EXTERNAL_STORAGE"/>
//写外部存储器的权限
<uses-permission android:name=
"android.permission.READ_PHONE_STATE"/>
//读手机状态的权限
c、必要条件
(1)、设置Aplication(应用)对象,通过获取应用的Aplication对象,可以让SDK得到当前应用的上下文环境,如当前上传的文件的统一上下文环境。Application对象是android框架的一个系统组件,当android程序启动时系统会创建一个application对象,用来存储系统的一些信息。android系统会为每个程序运行时创建一个Application类的对象且仅创建一个,所以Application可以说是单例(singleton)模式的一个类,且Application对象的生命周期是整个程序中最长的,它的生命周期就等于这个程序的生命周期。因为它是全局的单例的,所以通过Application对象来进行一些数据传递、数据共享、数据缓存等操作。
如:设置
com.qihoo.yunpan.sdk.android.config.YunpanApplication.setApplication()
方法;
或者,设置
<application android:name=
"com.qihoo.yunpan.sdk.android.config.YunpanApplication".../>
中的一个。
(2)、设置开发权限
如,key(AUTH_NAME,AUTH_KEY,AUTH_SECRET)必须赋值给com.qihoo.yunpan.sdk.android.config.YunpanSDKConstants中对应的值。
(3)、必须实现
com.qihoo.yunpan.sdk.android.config.YunpanSDKConstants.setYunpanInterface(IYunpanInterface yunpanInterface)接口,以保证实现文件上传任务的安全性。
通过该接口实现onNewUserToken函数和onUserCookieInvalid函数,其中,onNewUserToken函数用于刷新用户token,onUserCookieInvalid用于当用户cookie失效时,要求用户必须重新登陆。
(二)
对云存储系统的文件上传流程进行分析,从所有文件上传函数中获取完成文件上传任务的基本函数;将基本函数抽象为应用回调信息类,并根据基本函数定义应用回调信息类中的成员变量;使用成员变量在基本函数间传递参数,并按照文件上传流程确定基本函数的调用顺序;将应用回调信息类和确定了调用顺序的基本函数封装成SDK的上传接口。例如,云存储系统在进行文件上传时,由客户端发送文件上传指令,上传文件;而云存储端服务器接收到文件上传指令后,得知有文件上传任务,开始获取文件数据块,进而根据文件上传指令将获取到的文件数据块存储至指定位置。对该流程进行分析后,确定对于SDK来说,获取上传文件的相关数据(包括文件名、大小、位置、文件上下文环境、文件数据等)对应的各个函数,以及根据上传文件相关数据将文件存储到指定位置对应的各个函数均可被认为是基本函数,对这些基本函数进行抽象和封装,最终生成SDK的上传接口。
(1)抽象成的统一的应用回调信息类为:
Class com.qihoo.yunpan.sdk.android.task.TransferStatus;其包括的成员变量有:
名称:actionType
类型:ActionType,描述:当前传送状态
名称:localFileName
类型:String,描述:本地文件名
名称:remoteFileName
类型:String,描述:云存储端文件名
名称:requestCode
类型:String,描述:请求code(应用自行控制)
其中,ActionType(消息类型枚举)为com.qihoo.yunpan.sdk.android.task.TransferStatus.ActionType,其值包括:
名称:NULL
描述:无意义
名称:UPLOAD_PROCESSING
描述:上传任务处理中
名称:UPLOAD_FILE_HASH
描述:计算上传文件sha1
名称:UPLOAD_TRANSFER_DATA
描述:上传任务中正在上传数据
名称:UPLOAD_COMPLETE
描述:上传任务完成
(2)构造文件上传函数,实现文件上传任务
如,生成Class com.qihoo.yunpan.sdk.android.task.UploadTask
构造函数:UploadTask()
参数1:(名称:localFileName,类型:String,描述:本地文件名)
参数2:(名称:remoteFileName,类型:String,描述:云存储端文件名)
参数3:(名称:upload_handler,类型:Handler,描述:传达消息)
实现上述应用回调信息类和上传函数后,即可封装为上传接口向外提供。
优选地,在上传接口中还可以设置上传进度步长:(默认为5%触发一次,最小1,最大20),可以通过调用setProgressStep()和getProgressStep()方法设置返回数据集的位置。
优选地,在上传接口中还可以设置停止当前任务:(如果重新开始,请将当前任务重新在线程容器中启动),可以通过调用setIsRun(false)停止当前任务。
优选地,在上传接口中还可以设置单任务运行时的线程数:(默认为1,最大5),可以通过调用setUploadThreadNum(上传任务线程数)设置。通过设置线程数,实现SDK封装的上传任务支持JAVA标准的多线程环境。
其它主要云盘SDK方法还包括:
a、用户注册(UserIntfRegister)
生成Class com.qihoo.yunpan.sdk.android.http.action.UserIntfRegister
构造函数如下:
函数名:doUserIntfRegister()
参数1:(名称:userName,类型:String,描述:用户名)
参数2:(名称:passWord,类型:String,描述:密码)
(如果调用完获取验证码接口后,请将sc参数通过setSc()传入,setCaptcha()方法传入用户输入的验证码)
返回类型:UserCenterInfo
(如果返回值中的errno=5010,需要调用方法获取验证码(UserIntfGetCaptcha)获取)
b、用户登录(UserIntfLogin)
生成Class com.qihoo.yunpan.sdk.android.http.action.UserIntfLogin
构造函数如下:
函数名:login()
参数1:(名称:username,类型:String,描述:用户名)
参数2:(名称:passWord,类型:String,描述:密码)
参数3:(名称:captcha,类型:String,描述:用户输入的验证码)
参数4:(名称:sc,类型:String,描述:服务器返回的sc参数)
(如果调用完获取验证码接口后,请将captcha和sc参数赋值,没有验证码时给空值)
返回类型:UserCenterInfo
(如果返回值中的errno=5010,需要调用方法获取验证码(UserIntfGetCaptcha)获取)
c、获取云盘列表(FileGetNodeList)
生成Class com.qihoo.yunpan.sdk.android.http.action.getNodeList
构造函数如下:
函数名:getNodeList()
参数:(名称:path,类型:String,描述:云盘目录,/为根目录)
返回类型:FileNodeList
分页功能:(两项同时设置才生效,默认为从0开始全部)
包括:通过调用setStart()和getStart()方法设置返回数据集的位置,通过调用setCount()和getCount()方法设置返回数据集的数量;实现排序功能:通过调用setOrderParam()和getOrderParam()方法设置排序字段(默认为按文件名排序),通过调用setIsdesc()和isIsdesc()方法设置正序或倒序(默认为正序);设置内部类
enum com.qihoo.yunpan.sdk.android.http.action.getNodeList.OrderType
该内部类枚举类型的值包括:
名称:name
描述:按文件名
名称:mtime
描述:按修改时间
名称:fsize
描述:按文件大小
d、获取文件分享链接(LinkCreateFile)
生成Class com.qihoo.yunpan.sdk.android.http.action.LinkCreateFile
构造函数如下:
函数名:getFileLink()
参数:(名称:nameList,类型:List<String>,描述:需要生成连接的文件或文件夹列表)
返回类型:LinkCreateFileData
通过上述函数,实现了SDK上传任务的秒传。
上述其它主要云盘SDK方法中的一种或多种均可以可选方式封装入上传接口中,以为用户上传文件提供更好的使用体验。
步骤二:使用生成的SDK上传接口上传文件。
一种使用步骤一中生成的上传接口上传文件的流程如图3所示,该流程包括:
步骤S302:接收文件上传指令,上传任务开始。
步骤S304:SDK上传接口中的文件上传函数计算待上传文件的hash(哈希)值。
步骤S306:SDK上传接口中的文件上传函数申请文件上传任务。
步骤S308:SDK上传接口中的文件上传函数判断待上传的文件数据是否已存在,若否,则执行步骤S310;若是,则执行步骤S318。
步骤S310:SDK上传接口中的文件上传函数获取待上传的文件的文件块信息。
步骤S312:SDK上传接口中的文件上传函数判断是否完成文件上传,若是,则执行步骤S314;若否,则本次文件上传失败。
步骤S314:SDK上传接口中的文件上传函数确认待上传文件的文件数据全部上传完毕,执行步骤S318。
步骤S316:SDK上传接口中的文件上传函数确认本次上传任务完成。
步骤S318:SDK上传接口中的文件上传函数提示上传完成。
通过本实施例,实现了在android系统的移动终端上,通过SDK实现文件上传的任务,大幅减少了移动终端开发人员的开发难度和提高了移动终端开发效率和开发质量,加快了开发速度,降低了开发成本,有效避免了开发缺陷。
实施例四
参照图4,示出了根据本发明实施例四的一种SDK实现文件上传的装置的结构框图。
本实施例的SDK实现文件上传的装置中的SDK应用于云存储系统,该装置包括:获取模块402,用于接收文件上传指令,获取待上传文件的信息及上传所述待上传文件的统一上下文环境;上传模块404,用于通过上传接口中设定的应用回调信息类中的成员变量,调用上传接口中封装的多个文件上传函数,使多个文件上传函数根据待上传文件的信息,使用统一上下文环境进行待上传的文件的上传。
优选地,本实施例的SDK实现文件上传的装置还包括:封装模块406,用于将多个文件上传函数通过以下方式预先封装在所述上传接口中:对云存储系统的文件上传流程进行分析,从所有文件上传函数中获取完成文件上传任务的基本函数;将基本函数抽象为应用回调信息类,并根据基本函数定义应用回调信息类中的成员变量;使用成员变量在基本函数间传递参数,并按照文件上传流程确定基本函数的调用顺序;将应用回调信息类和确定了调用顺序的基本函数封装成上传接口。
优选地,上传接口中还封装有上传线程参数;本实施例的SDK实现文件上传的装置还包括:线程设置模块408,用于在上传模块404通过上传接口中设定的应用回调信息类中的成员变量,调用上传接口中封装的多个文件上传函数之前,接收上传线程参数设置指令,根据上传线程参数设置指令设置的上传线程参数,启动上传线程参数指示数量的上传线程进行待上传的文件的上传。
优选地,上传模块404在通过上传接口中设定的应用回调信息类中的成员变量,调用上传接口中封装的多个文件上传函数时:由上传接口通过使用设定的应用回调信息类中的成员变量以及句柄参数,调用上传接口中封装的多个文件上传函数;其中,句柄参数用于在多个文件上传函数之间传达消息。
优选地,上传接口中还封装有文件秒传函数;本实施例的SDK实现文件上传的装置还包括:秒传模块410,用于在获取模块402接收文件上传指令,获取待上传文件的信息及上传所述待上传文件的统一上下文环境之后,调用文件秒传函数根据待上传文件的信息,判断待上传文件在云存储端是否已存在;若待上传文件在云存储端已存在,则建立用户的用户标识与已存在的文件之间的链接。
本实施例的SDK实现文件上传的装置用于实现前述多个方法实施例中相应的SDK实现文件上传的方法,并具有相应的方法实施例的有益效果,在此不再赘述。
在此提供的SDK实现文件上传的方案不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造具有本发明方案的系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的SDK实现文件上传的方案中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
Claims (10)
1.一种软件开发工具包实现文件上传的方法,所述软件开发工具包应用于云存储系统,所述方法包括:
接收文件上传指令,获取待上传文件的信息及上传所述待上传文件的统一上下文环境;
通过上传接口中设定的应用回调信息类中的成员变量,调用所述上传接口中封装的多个文件上传函数,使所述多个文件上传函数根据所述待上传文件的信息,使用所述统一上下文环境进行所述待上传的文件的上传。
2.根据权利要求1所述的方法,所述多个文件上传函数通过以下方式预先封装在所述上传接口中:
对所述云存储系统的文件上传流程进行分析,从所有文件上传函数中获取完成文件上传任务的基本函数;
将所述基本函数抽象为所述应用回调信息类,并根据所述基本函数定义所述应用回调信息类中的成员变量;
使用所述成员变量在所述基本函数间传递参数,并按照所述文件上传流程确定所述基本函数的调用顺序;
将所述应用回调信息类和确定了调用顺序的所述基本函数封装成所述上传接口。
3.根据权利要求2所述的方法,所述上传接口中还封装有上传线程参数;
在所述通过上传接口中设定的应用回调信息类中的成员变量,调用所述上传接口中封装的多个文件上传函数的步骤之前,还包括:
接收上传线程参数设置指令,根据所述上传线程参数设置指令设置的上传线程参数,启动所述上传线程参数指示数量的上传线程进行所述待上传的文件的上传。
4.根据权利要求1所述的方法,所述通过上传接口中设定的应用回调信息类中的成员变量,调用所述上传接口中封装的多个文件上传函数的步骤包括:
所述上传接口通过使用设定的应用回调信息类中的成员变量以及句柄参数,调用所述上传接口中封装的多个文件上传函数;
其中,所述句柄参数用于在所述多个文件上传函数之间传达消息。
5.根据权利要求1所述的方法,所述上传接口中还封装有文件秒传函数;
在所述接收文件上传指令,获取待上传文件的信息及上传所述待上传文件的统一上下文环境的步骤之后,还包括:
调用所述文件秒传函数根据所述待上传文件的信息,判断所述待上传文件在云存储端是否已存在;
若所述待上传文件在云存储端已存在,则建立用户的用户标识与已存在的文件之间的链接。
6.一种软件开发工具包实现文件上传的装置,所述软件开发工具包应用于云存储系统,所述装置包括:
获取模块,用于接收文件上传指令,获取待上传文件的信息及上传所述待上传文件的统一上下文环境;
上传模块,用于通过上传接口中设定的应用回调信息类中的成员变量,调用所述上传接口中封装的多个文件上传函数,使所述多个文件上传函数根据所述待上传文件的信息,使用所述统一上下文环境进行所述待上传的文件的上传。
7.根据权利要求6所述的装置,所述装置还包括:
封装模块,用于将所述多个文件上传函数通过以下方式预先封装在所述上传接口中:
对所述云存储系统的文件上传流程进行分析,从所有文件上传函数中获取完成文件上传任务的基本函数;
将所述基本函数抽象为所述应用回调信息类,并根据所述基本函数定义所述应用回调信息类中的成员变量;
使用所述成员变量在所述基本函数间传递参数,并按照所述文件上传流程确定所述基本函数的调用顺序;
将所述应用回调信息类和确定了调用顺序的所述基本函数封装成所述上传接口。
8.根据权利要求7所述的装置,所述上传接口中还封装有上传线程参数;
所述装置还包括:
线程设置模块,用于在所述上传模块通过上传接口中设定的应用回调信息类中的成员变量,调用所述上传接口中封装的多个文件上传函数之前,接收上传线程参数设置指令,根据所述上传线程参数设置指令设置的上传线程参数,启动所述上传线程参数指示数量的上传线程进行所述待上传的文件的上传。
9.根据权利要求6所述的装置,所述上传模块在通过上传接口中设定的应用回调信息类中的成员变量,调用所述上传接口中封装的多个文件上传函数时:
由所述上传接口通过使用设定的应用回调信息类中的成员变量以及句柄参数,调用所述上传接口中封装的多个文件上传函数;
其中,所述句柄参数用于在所述多个文件上传函数之间传达消息。
10.根据权利要求6所述的装置,所述上传接口中还封装有文件秒传函数;
所述装置还包括:
秒传模块,用于在所述获取模块接收文件上传指令,获取待上传文件的信息及上传所述待上传文件的统一上下文环境之后,调用所述文件秒传函数根据所述待上传文件的信息,判断所述待上传文件在云存储端是否已存在;若所述待上传文件在云存储端已存在,则建立用户的用户标识与已存在的文件之间的链接。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310522159.5A CN103595769B (zh) | 2013-10-29 | 2013-10-29 | Sdk实现文件上传的方法与装置 |
PCT/CN2014/089765 WO2015062494A1 (zh) | 2013-10-29 | 2014-10-29 | Sdk实现文件上传、下载的方法与装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310522159.5A CN103595769B (zh) | 2013-10-29 | 2013-10-29 | Sdk实现文件上传的方法与装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103595769A CN103595769A (zh) | 2014-02-19 |
CN103595769B true CN103595769B (zh) | 2017-02-08 |
Family
ID=50085749
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310522159.5A Active CN103595769B (zh) | 2013-10-29 | 2013-10-29 | Sdk实现文件上传的方法与装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103595769B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015062494A1 (zh) * | 2013-10-29 | 2015-05-07 | 北京奇虎科技有限公司 | Sdk实现文件上传、下载的方法与装置 |
CN105022962A (zh) * | 2015-07-02 | 2015-11-04 | 四川效率源信息安全技术有限责任公司 | 网盘数据内容加密保护的方法 |
CN105516969B (zh) * | 2015-12-15 | 2019-03-05 | 中卓信(北京)科技有限公司 | 一种手机短信安全验证方法 |
CN109144597B (zh) * | 2017-06-19 | 2021-09-07 | 武汉斗鱼网络科技有限公司 | 一种获得下载接口回调信息的方法和装置 |
CN112543214A (zh) * | 2019-09-23 | 2021-03-23 | 北京国双科技有限公司 | 一种文件上传方法、装置、存储介质及设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7212574B2 (en) * | 2002-04-02 | 2007-05-01 | Microsoft Corporation | Digital production services architecture |
CN102656555A (zh) * | 2009-12-23 | 2012-09-05 | 英特尔公司 | 用于自动获得并同步上下文内容和应用的方法和设备 |
CN102713844A (zh) * | 2010-01-18 | 2012-10-03 | 汤姆森许可贸易公司 | 执行软件应用的方法、系统和设备 |
-
2013
- 2013-10-29 CN CN201310522159.5A patent/CN103595769B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7212574B2 (en) * | 2002-04-02 | 2007-05-01 | Microsoft Corporation | Digital production services architecture |
CN102656555A (zh) * | 2009-12-23 | 2012-09-05 | 英特尔公司 | 用于自动获得并同步上下文内容和应用的方法和设备 |
CN102713844A (zh) * | 2010-01-18 | 2012-10-03 | 汤姆森许可贸易公司 | 执行软件应用的方法、系统和设备 |
Non-Patent Citations (1)
Title |
---|
Android平台上多云文件管理器的设计与实现;罗泽鑫 等;《中国科技论文在线》;20131028;第1-3页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103595769A (zh) | 2014-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103595770B (zh) | Sdk实现文件下载的方法与装置 | |
CN108279892B (zh) | 一种拆分大型应用服务为微服务的方法、装置及设备 | |
CN103595769B (zh) | Sdk实现文件上传的方法与装置 | |
CA2915620C (en) | Method and apparatus for code virtualization and remote process call generation | |
CN110442524B (zh) | 一种针对带有认证授权的web服务接口测试方法和装置 | |
US11200157B1 (en) | Automated execution reporting for container builds | |
CN105765527A (zh) | 用于定制的软件开发包(sdk)的方法和装置 | |
CN108228444B (zh) | 一种测试方法和装置 | |
CN112416353A (zh) | 渠道包打包方法、装置及计算机设备 | |
CN105045602A (zh) | 一种构建Hadoop应用开发框架的方法、装置及电子装置 | |
CN107506284B (zh) | 日志处理方法及装置 | |
CN107070752B (zh) | 一种长连接容量的测试方法及测试系统 | |
CN107704499A (zh) | 一种应用程序的页面跳转控制方法及装置 | |
CN107015902B (zh) | 一种测试方法和设备 | |
CN113687858A (zh) | 配置文件的检查方法、装置、电子设备及存储介质 | |
CN109491755A (zh) | 操作系统中应用程序的保护方法和装置 | |
Abbade et al. | Performance comparison of programming languages for Internet of Things middleware | |
US20200274758A1 (en) | Provisioning hybrid cloud resources in an operating environment | |
CN110851211A (zh) | 用于显示应用信息的方法、装置、电子设备和介质 | |
WO2015062494A1 (zh) | Sdk实现文件上传、下载的方法与装置 | |
CN113448690A (zh) | 监测方法及装置 | |
CN112732265B (zh) | 一种数据处理方法和相关装置 | |
CN105227597A (zh) | 一种获取终端设备屏幕画面的方法、装置及系统 | |
CN113051245A (zh) | 用于迁移数据的方法、装置及系统 | |
CN112650710B (zh) | 数据迁移的发送方法及装置、存储介质、电子装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220728 Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015 Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd. Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park) Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd. Patentee before: Qizhi software (Beijing) Co.,Ltd. |