图片上传方法、装置、电子终端及可读存储介质
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种图片上传方法、装置、电子终端及可读存储介质。
背景技术
随着移动端的快速发展和拍照功能的日益强大,图片上传功能在应用程序产品中的应用也日益广泛,比如微信朋友圈,微博分享等知名应用程序都涉及到图片上传的功能。如何快速、安全的实现图片上传,已经成为大多应用程序必须考虑的技术点之一。现有的一些图片上传方法,需要用户通过各种操作选择待上传的图片,然后在在有网络连接的情况下就可以实现图片的上传。在没有网络的情况下,上传图片前的一系列操作会导致终端资源的浪费。同时,即便在有网络连接的情况下,不安全的网络可能还会带来一些不安全的因素。
发明内容
有鉴于此,本发明实施例的目的在于提供一种图片上传方法、装置、电子终端及可读存储介质。
本发明实施例提供的一种图片上传方法,应用于电子终端,所述电子终端与服务器通信连接,所述图片上传方法包括:
启动网络监控类对象监控所述电子终端的网络状态,所述网络状态包括网络类型以及网络连接状态;
当所述网络状态处于目标网络的连接状态时,提供用于根据用户的操作接收一张或多张待上传图片的配置信息的操作接口,所述配置信息包括图片数据、图片名称、图片格式;
根据所述配置信息将所述待上传图片上传至所述服务器。
本发明实施例还提供一种图片上传装置,应用于电子终端,所述电子终端与服务器通信连接,所述图片上传装置包括:
监控模块,用于启动网络监控类对象监控所述电子终端的网络状态,所述网络状态包括网络类型以及网络连接状态;
接收模块,用于当所述网络状态处于目标网络的连接状态时,提供用于根据用户的操作接收一张或多张待上传图片的配置信息的操作接口,所述配置信息包括图片数据、图片名称、图片格式;
上传模块,用于根据所述配置信息将所述待上传图片上传至所述服务器。
本发明实施例还提供一种电子终端,包括:
存储器;
处理器;
上述的图片上传装置,该图片上传装置存储于所述存储器并由所述处理器控制执行。
本发明实施例还提供一种可读存储介质,其上存储有计算机程序,所述计算机程序在执行时实现上述的图片上传方法。
与现有技术相比,本发明实施例的图片上传方法、装置、电子终端及可读存储介质,通过监控电子终端的网络情况,根据网络情况再执行数据接收以及图片上传的步骤,避免在网络不符合条件时先执行了接收图片数据以及发送请求的流程再判断网络不符合条件后再进行中止造成的电子终端的资源浪费。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明较佳实施例提供的服务器与电子终端进行交互的示意图。
图2为本发明较佳实施例提供的电子终端的方框示意图。
图3为本发明较佳实施例提供的图片上传方法的流程图。
图4为本发明较佳实施例提供的图片上传方法的步骤S101的详细流程图。
图5为本发明较佳实施例提供的图片上传方法的步骤S103的详细流程图。
图6为本发明较佳实施例提供的图片上传装置的功能模块示意图。
图7为本发明较佳实施例提供的图片上传装置的上传模块的功能模块示意图。
图8为本发明较佳实施例提供的图片上传装置的监控模块的功能模块示意图。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
如图1所示,是本发明较佳实施例提供的服务器200与电子终端100进行交互的示意图。所述服务器200通过网络与一个或多个电子终端进行通信连接,以进行数据通信或交互。所述服务器200可以是网络服务器、数据库服务器等。所述电子终端100可以是个人电脑(personal computer,PC)、平板电脑、智能手机、个人数字助理(personal digitalassistant,PDA)等。
图2示出了电子终端100的方框示意图。所述电子终端包括实时动画显示装置110、存储器111、存储控制器112、处理器113、外设接口114、输入输出单元115、显示单元116。图2所示的结构仅为示意,其并不对电子终端100的结构造成限定。例如,电子终端100还可包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。
所述存储器111、存储控制器112、处理器113、外设接口114、输入输出单元115及显示单元116各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。所述实时动画显示装置110包括至少一个可以软件或固件(firmware)的形式存储于所述存储器111中或固化在所述电子终端100的操作系统(operating system,OS)中的软件功能模块。所述处理器113用于执行存储器中存储的可执行模块,例如所述实时动画显示装置110包括的软件功能模块或计算机程序。
其中,所述存储器111可以是,但不限于,随机存取存储器(Random AccessMemory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(ProgrammableRead-Only Memory,PROM),可擦除只读存储器(Erasable Programmable Read-OnlyMemory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-OnlyMemory,EEPROM)等。其中,存储器111用于存储程序,所述处理器113在接收到执行指令后,执行所述程序,本发明实施例任一实施例揭示的过程定义的电子终端100所执行的方法可以应用于处理器113中,或者由处理器113实现。
所述处理器113可能是一种集成电路芯片,具有信号的处理能力。上述的处理器113可以是通用处理器,包括中央处理器(Central ProcessingUnit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述外设接口114将各种输入/输入装置耦合至处理器113以及存储器111。在一些实施例中,外设接口114,处理器113以及存储控制器112可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。
所述输入输出单元115用于提供给用户输入数据。所述输入输出单元115可以是,但不限于,鼠标和键盘等。音频单元向用户提供音频接口,其可包括一个或多个麦克风、一个或者多个扬声器以及音频电路。
所述显示单元116在所述电子终端100与用户之间提供一个交互界面(例如用户操作界面)或用于显示图像数据给用户参考。在本实施例中,所述显示单元可以是液晶显示器或触控显示器。若为触控显示器,其可为支持单点和多点触控操作的电容式触控屏或电阻式触控屏等。支持单点和多点触控操作是指触控显示器能感应到来自该触控显示器上一个或多个位置处同时产生的触控操作,并将该感应到的触控操作交由处理器进行计算和处理。
请参阅图3,是本发明较佳实施例提供的应用于图2所示的电子终端的图片上传方法的流程图。下面将对图3所示的具体流程进行详细阐述。
步骤S101,启动网络监控类对象监控所述电子终端的网络状态。
本实施例中,所述网络状态包括网络类型以及网络连接状态。本实施例中,所述网络类型可以是移动网络,也可以是无线网络,还可以是有线网络。所述网络连接状态可以是网络可用连接、网络不可用连接、无网络连接。
在一种实施方式中,所述电子终端中预创建的网络请求管理框架中的网络监控类来实现当前网络的状态监控。
本实施例中,如图4所示,所述步骤S101包括:
步骤S1011,根据预先创建的监控工具类对象的监控方法监控所述电子终端的网络状态。
在一个实例中,网络请求管理框架DYetworking中提供的网络监控类DYetworkReachabilityManager来监控当前网络的状态。
步骤S1012,调用所述监控工具类对象的回调记录函数记录所述监控方法监控得到的网络状态。
本实施例中,当所述电子终端的网络为连接状态时,判断所述电子终端当前连接的网络名是否为指定的一个或多个网络名中的任意一个,若是,则判定电子终端的网络状态处于目标网络的连接状态。在一种实施方式中,所述指定的一个或多个网络名可以是电子终端常用的网络名,例如手机网络或连接频率高的无线网络。
在一个实例中,用一个枚举类型的静态变量networkStatus来记录电子终端当前的网络状态。DYetworkReachabilityManager类可以监听四种网络状态,分别为:
DYetworkReachabilityStatusNotReachable(网络不可用)、
DYetworkReachabilityStatusUnknown(未知网络)、
DYetworkReachabilityStatusReachableViaWWAN(手机通信网络)、
DYetworkReachabilityStatusReachableViaWiFi(wifi网络)。
根据这四种状态,networkStatus的值分别记为网络不可用、未知网络、网络可用。其中,网络可用对应的状态为手机通信网络或者wifi网络。
本实施例中,所述网络监控DYetworkReachabilityManager来实现监控当前网络的状态的具体使用过程可以描述如下:
首先,用网络监控工具类调用网络请求管理框架DYetworking内部提供的类方法sharedManager创建一个DYetworkReachabilityManager工具类对象;
其次,用DYetworkReachabilityManager工具类对象调用监控方法startMonitoring方法开始监控。
最后,用DYetworkReachabilityManager工具类对象调用setReachabilityStatusChangeBlock:^(DYetworkReachabilityStatus status)block方法,在block回调中记录网络状态。当网络不能连接时,给networkStatus赋值为DYNetworkStatusNotReachable;当网络状态为未知连接时,networkStatus赋值为DYNetworkStatusUnknown;当网络状态为蜂窝连接或WiFi连接时,networkStatus赋值为DYNetworkStatusNormal。
本实施例中,当所述网络状态为网络可用状态时则判定所述网络状态处于目标网络的连接状态,可以执行步骤S102,否则退出流程。
本实施例中,在网络为未知的情况下有可能被其他人员进行了误操作,可能执行上传图片的当前页面并非处于对应的用户登录的状态。因此在网络未知及不可用状态时,流程结束,可以有效避免不必要的操作,提升电子终端的性能,减少不必要的消耗。另外,在未知网络时,也不执行步骤S102的过程可以提高用户上传图片的安全性。
本实施例中,当所述网络状态为连接状态时,连接的网络可能是已知网络也可能是未知网络。
具体地,现有技术中的网络监控是基于电子终端的设置,关闭一些功能在手机网络中进行使用,而本发明实施例中是将网络监控的功能封装在所述图片上传的对象方法中,在执行图片上传前先进行网络的监控,在网络不符合设定的目标网络的连接状态时就不执行图片上传的流程,以节省电子终端的资源。
步骤S102,当所述网络状态处于目标网络的连接状态时,提供用于根据用户的操作接收一张或多张待上传图片的配置信息的操作接口。
本实施例中,所述配置信息包括图片数据、图片名称、图片格式。
在一种实施方式中,所述电子终端中提供操作接口接收用户输入的配置信息。例如,所述操作接口可以是一个用户操作选项,在所述网络状态处于目标网络的连接状态时,所述操作选项可以由不可操作状态变为可操作状态,操作选项由灰色变为彩色(指示用户可操作)。从而,使得用户可以操作所述操作选项进行后续的图片上传操作。在所述网络状态未处于目标网络的连接状态时,所述操作选项则保持在不可操作状态(灰色),以避免用户在进行一系列操作后才发现网络不可能而导致的资源浪费以及操作时间浪费。
在另一种实施方式中,所述操作接口可接收用户操作选择的待上传图片的存储路径或者从存储路径直接选择的图片,从而使得电子终端可根据用户的操作得到相应的所述配置信息由,例如,用户可采用拖拽的方式将待上传的图片拖入所述操作接口(如该操作接口为图片上传控件时),电子终端即可根据该拖拽的图片进行解析得到所述配置信息。再一种实施方式中,所述电子终端中预设有解析单元,用于获取所述电子终端实时拍摄的图片,然后解析所述图片以得到所述配置信息再传输给所述操作接口。
步骤S103,根据所述配置信息将所述待上传图片上传至所述服务器。
本实施例中,将图片上传的过程封装到一个对象方法中,利用工具类进行管理。需要上传图片时,调用接口函数传入图片的配置信息即可实现图片的上传,如配置信息可以包括:图片数据、图片地址、图片的名字等。
本实施例中,如图5所示,所述步骤S103包括步骤S1031至S1036。
步骤S1031,根据所述配置信息向所述服务器发送上传图片请求。
步骤S1032,根据所述上传图片请求生成上传任务,并将每个上传任务添加至预先建立的任务数组中。
本实施例中,在根据所述上传图片请求生成上传任务,并将每个上传任务添加至预先建立的任务数组中步骤之后,所述方法还包括:当接收用户中断发送任一待上传图片给所述服务器的操作时,将该待上传图片对应的上传任务从所述任务数组中移除;或者,当任一待上传图片的上传操作界面被关闭时,将该待上传图片对应的上传任务从所述任务数组中移除。
本实施例中,通过调用configurationSessionManager方法,设置配置信息、请求方法类型。这个配置信息需要一个网络请求的url地址、需要网络请求的参数,以及网络请求的类型,建立网络请求、生成所述上传任务及将上传任务存储到任务数组的具体的实现过程可以为如下流程:
1)创建一个请求管理器。
2)为所述响应的管理器设置响应能够接受到数据类型。在一个实例中,能够接受到数据类型可以设置为文本类型,json类型,text类型,xml类型,html类型等。
3)为请求管理器设置请求类型,这些类型是post还是get,其中post表示上传图片,get表示接收图片。
4)将构建的请求管理器进行保存。
通过上述步骤1)至4)实现请求管理器的构建,上述构建过程可以是电子终端接收用户输入的请求管理器对应程序以及类型设置,并将请求管理器预存在所述电子终端中。
5)调用请求管理器的任务管理对象使用post方法将url和参数发送给后台服务器,这个发送的过程中会得到一个NSURLSessionDataTask类型的上传任务task,如果上传任务发起成功那么将该上传任务task添加到任务数组进行保存。
步骤S1033,将所述任务数组中的上传任务对应的待上传图片上传至所述服务器。
步骤S1034,接收服务器返回的上传结果。
步骤S1035,解析所述上传结果获得任务结果。
步骤S1036,若解析得到的任务结果为待上传图片上传成功,则将该待上传图片对应的上传任务从所述任务数组中移除。
本实施例中,所述电子终端还可以在图片上传时监控图片的上传进度,以使用户能够实时获知图片的上传情况。
本实施例中,所述网络监控功能、图片上传进度监控功能与图片上传功能封装在一个对象方法中。
在一种实施方式中,在所述电子终端中预先创建一个名为DYNetworkingManager的工具类,用于管理图片上传。作为工具类,提供创建工具类对象的类方法+(instancetype)manager,用于创建工具类对象。该方法内部封装了分配内存和初始化的操作,电子终端在创建工具类的对象时,使用工具类名调用manager方法以实现创建工具类对象。
本实施方式中,所述工具类对象提供一个实现图片上传的对象方法,以参数的形式传入图片、上传的地址、图片的名字、相关的配置参数等。所述实现图片上传的对象方法如下:
-(void)uploadWithImage:(UIImage*)image
url:(NSString*)url
name:(NSString*)name
params:(NSDictionary*)params
progressBlock:(DYNetWorkingProgress)progressBlock
successBlock:(DYResponseSuccessBlock)successBlock
failBlock:(DYResponseFailBlock)failBlock;
其中,上述的参数分别表示:image为待上传图片,图片类型;url为待上传图片的url地址,字符串类型;name为图片的名字,字符串类型;params为配置参数,字典类型;block类型参数progressBlock用于监听图片上传的进度,successBlock用于监听图片上传成功后的处理,failBlock用于监听图片上传失败后的处理。其中,所述配置信息作为所述实现图片上传的对象方法的参数以进行执行图片上传。
本实施方式中,将图片上传、网络监控及速度监控封装到一个对象方法中,可以使用较少的代码就能够实现更多的功能,提高电子终端的性能。
具体地,调用任务管理器的HTTPSessionManager类型的sessionManager对象,调用POST:parameters:constructingBodyWithBlock:方法进行图片上传。该方法内部可以包含如下过程:
在progress中调用progressBlock,监听上传的进度,可以实时获知文件上传的进度,即上传的百分比。
在success中移除上传任务,且对返回结果进行解析。所述返回结果可包括多个字段:NSURLSessionDataTask类型的上传任务task、任务完成之后的响应responseObject。获取responseObject是一个二进制的数据,进行序列化,转化为json或者xml,再将网络请求成功的消息回调给上一级函数,同时将存储上传任务task的任务数组中移除本次上传任务task。
本实施例中,所述在failure中监听错误信息。同时也需要在failture里面将存储任务task的数组移除本次上传任务task。
根据本实施例中的图片上传方法,通过监控电子终端的网络情况,根据网络情况再执行数据接收以及图片上传的步骤,避免在网络不符合条件时,先执行了接收数据以及发送请求的步骤再判断网络不符合条件后再进行中止造成的电子终端的资源浪费,省去了无网条件下一些不必要的操作,提升了代码的利用率和电子终端的执行效率。
请参阅图6,是本发明较佳实施例提供的图2所示的图片上传装置的功能模块示意图。所述图片上传装置110包括监控模块1101、接收模块1102以及接收模块1102。
所述监控模块1101,用于启动网络监控类对象监控所述电子终端的网络状态,所述网络状态包括网络类型以及网络连接状态。
所述接收模块1102,用于当所述网络状态处于目标网络的连接状态时,提供用于根据用户的操作接收一张或多张待上传图片的配置信息的操作接口,所述配置信息包括图片数据、图片名称、图片格式。
所述上传模块1103,用于根据所述配置信息将所述待上传图片上传至所述服务器。
本实施例中,如图7所示,所述上传模块1103包括:请求发送单元11031、任务生成单元11032、图片上传单元11033、结果接收单元11034、结果解析单元11035以及任务移除单元11036。
所述请求发送单元11031,用于根据所述配置信息向所述服务器发送上传图片请求。
所述任务生成单元11032,用于根据所述上传图片请求生成上传任务,并将每个上传任务添加至预先建立的任务数组中。
所述图片上传单元11033,用于将所述任务数组中的上传任务对应的待上传图片上传至所述服务器。
所述结果接收单元11034,用于接收服务器返回的上传结果。
所述结果解析单元11035,用于解析所述上传结果获得任务结果。
所述任务移除单元11036,用于若解析得到的任务结果为待上传图片上传成功,则将该待上传图片对应的上传任务从所述任务数组中移除。
本实施例中,所述图片上传装置110还包括:
所述任务移除单元11036还用于当接收用户中断发送任一待上传图片给所述服务器的操作时,将该待上传图片对应的上传任务从所述任务数组中移除。
所述任务移除单元11036还用于当任一待上传图片的上传操作界面被关闭时,将该待上传图片对应的上传任务从所述任务数组中移除。
本实施例中,如图8所示,所述监控模块1101包括:状态监控单元11011及结果返回单元11012。
所述状态监控单元11011,用于根据预先创建的监控工具类对象的监控方法监控所述电子终端的网络状态。
所述结果返回单元11012,用于调用所述监控工具类对象的回调函数返回所述监控方法监控得到的网络状态。
其中,当所述电子终端的网络为连接状态时,所述电子终端当前连接的网络名为指定的一个或多个网络名中的任意一个时,判定电子终端的网络状态处于所述目标网络的连接状态。
关于本实施例的其它细节还可以进一步地参考上述方法实施例中的描述,在此不再赘述。
根据本实施例中的图片上传装置,通过监控电子终端的网络情况,根据网络情况再执行数据接收以及图片上传的步骤,避免在网络不符合条件时,先执行了接收数据以及发送请求的步骤再判断网络不符合条件后再进行中止造成的电子终端的资源浪费,省去了无网条件下一些不必要的操作,提升了代码的利用率和电子终端的执行效率。
本发明实施例提供一种可读存储介质,其上存储有计算机程序,所述计算机程序在执行时实现上述实施例提供的图片上传方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。