图片存储方法、装置及服务器与流程

文档序号:21102149发布日期:2020-06-16 20:55阅读:314来源:国知局
图片存储方法、装置及服务器与流程

本发明涉及图片处理领域,尤其涉及一种图片存储方法、装置及服务器。



背景技术:

图床作为存储图片的服务器,用户可以将图片存储在服务器中,然而,在现有技术中,用户在将图片存储至服务器时,经常会出现在较短的时间段内无序重复上传相同图片的情况,或者由于用户误操作导致上传的图片重复,从而导致服务后台重复存储一些图片,给储存空间造成压力以及不必要的浪费,同时会导致图片查询和检索繁琐,使得服务性能降低。



技术实现要素:

本发明实施例的目的是提供一种图片存储方法、装置、服务器及计算机可读存储介质,用于解决现有服务器会重复存储一些图片,导致存储空间浪费的问题。

本发明提供了一种图片存储方法,包括:

接收终端设备通过第一应用程序接口上传的待存储图片;

通过所述第一应用程序接口计算所述待存储图片的第一消息摘要;

判断预设的数据库中是否存储有与所述第一消息摘要相匹配的第二消息摘要;

若所述数据库中未存储有所述第二消息摘要,则将所述待存储图片存储在所述数据库中,并将所述待存储图片的存储地址返回给所述终端设备;

若所述数据库中存储有所述第二消息摘要,则返回与所述第二消息摘要相关联的图片的存储地址给所述终端设备。

可选地,所述通过所述第一应用程序接口计算所述待存储图片的第一消息摘要包括:

通过所述第一应用程序接口采用md算法计算所述待存储图片的第一消息摘要。

可选地,所述md算法为md5算法。

可选地,所述通过所述第一应用程序接口计算所述待存储图片的第一消息摘要包括:

通过所述第一应用程序接口采用sha算法计算所述待存储图片的第一消息摘要。

可选地,所述数据库为mongo数据库,所述mongo数据库的数据存储结构包括图片id字段、图片数据字段、消息摘要字段,所述判断预设的数据库中是否存储有与所述第一消息摘要相匹配的第二消息摘要的步骤包括:

在所述mongo数据库中查找所述消息摘要字段对应的数据;

判断所述消息摘要字段对应的数据中是否存在与所述第一消息摘要相匹配的第二消息摘要。

可选地,所述图片存储方法还包括:

接收所述终端设备通过第二应用程序接口发送的图片查询指令,所述图片查询指令包括待查询图片的存储地址,所述待查询图片的存储地址包含待查询图片的图片id;

根据所述图片id在所述mongo数据库中查询所述待查询图片;

在查询到所述待查询图片时,将所述待查询图片对应的图片数据返回给所述终端设备,以使所述终端设备根据所述图片数据显示所述待查询图片。

本发明还提供了一种图片存储装置,包括:

接收模块,用于接收终端设备通过第一应用程序接口上传的待存储图片;

计算模块,用于通过所述第一应用程序接口计算所述待存储图片的第一消息摘要;

判断模块,用于判断预设的数据库中是否存储有与所述第一消息摘要相匹配的第二消息摘要;

存储模块,用于若所述数据库中未存储有所述第二消息摘要,则将所述待存储图片存储在所述数据库中,并将所述待存储图片的存储地址返回给所述终端设备;

返回模块,用于若所述数据库中存储有所述第二消息摘要,则返回与所述第二消息摘要相关联的图片的存储地址给所述终端设备。

可选地,所述数据库为mongo数据库,所述mongo数据库的数据存储结构包括图片id字段、图片数据字段、消息摘要字段,所述判断模块,还用于在所述mongo数据库中查找所述消息摘要字段对应的数据;以及用于判断所述消息摘要字段对应的数据中是否存在与所述第一消息摘要相匹配的第二消息摘要。

本发明还提供了一种服务器,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述所述的图片存储方法的步骤。

本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述所述的图片存储方法的步骤。

上述技术方案的有益效果:

本发明实施例通过接收终端设备通过第一应用程序接口上传的待存储图片;通过所述第一应用程序接口计算所述待存储图片的第一消息摘要;判断预设的数据库中是否存储有与所述第一消息摘要相匹配的第二消息摘要;若所述数据库中未存储有所述第二消息摘要,则将所述待存储图片存储在所述数据库中,并将所述待存储图片的存储地址返回给所述终端设备;若所述数据库中存储有所述第二消息摘要,则返回与所述第二消息摘要相关联的图片的存储地址给所述终端设备。本发明实施例通过在将图片存储至数据库之前,计算该图片的信息摘要,以便可以根据该信息摘要确定数据库中是否存在该图片,并在确定数据库中不存在该图片时,才存储该图片,从而可以不对相同的图片重复进行存储,节省存储空间。

附图说明

图1为本发明所述的图片存储方法的一种实施例的流程图;

图2为本发明图1中判断预设的数据库中是否存储有与所述第一消息摘要相匹配的第二消息摘要的步骤的细化流程图;

图3为本发明所述的图片存储方法的另一种实施例的流程图;

图4为本发明实施例提供的图片存储装置的一种实施例的程序模块图;

图5为本发明服务器一实施例的架构图。

具体实施方式

以下结合附图与具体实施例进一步阐述本发明的优点。

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

在本发明的描述中,需要理解的是,步骤前的数字标号并不标识执行步骤的前后顺序,仅用于方便描述本发明及区别每一步骤,因此不能理解为对本发明的限制。

本发明实施例提出了一种图片存储方法。该图片存储方法应用于服务器中,该服务器优选为图床服务器,该图床服务器可以为独立的服务器,也可以为服务器集群,比如为分布式系统。

参阅图1,其为本发明一实施例的图片存储方法的流程示意图,可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。

如图1所示,该图片存储方法包括步骤s10~s14,其中:

步骤s10、接收终端设备通过第一应用程序接口上传的待存储图片;

具体地,所述终端设备可以以多种形式存在,包括但不限于:

(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iphone)、多媒体手机、功能性手机,以及低端手机等。

(2)超移动个人服务器:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:pda、mid和umpc设备等,例如ipad。

(3)其他具有数据交互功能的电子装置。

在本实施例中,服务器对外提供第一应用程序接口(api,applicationprogramminginterface),以供终端设备通过该第一应用程序接口将图片存储在服务器中,即该第一应用程序接口为用于存储图片的接口。终端设备上具有相应的应用客户端或网页客户端,用户可以通过终端设备中的应用客户端或网页客户端将图片存储至服务器中。当需要将终端设备存储至服务器中时,终端设备按照该第一应用程序接口的规范,将待存储图片的数据进行封装,然后将封装后的图片数据通过该第一应用程序接口进行上传,从而使得服务器可以接收到终端设备上传的待存储图片。

步骤s11、通过所述第一应用程序接口计算所述待存储图片的第一消息摘要。

具体地,消息摘要(messagedigest)又称为数字摘要(digitaldigest)。它是一个唯一对应一个消息或文本的固定长度的值,它由消息摘要算法对消息进行作用而产生。如果消息在途中改变了,则接收者通过对收到消息的新产生的摘要与原摘要比较,就可知道消息是否被改变了。因此消息摘要保证了消息的完整性。在本实施例中,该消息摘要算法可以为md算法、sha算法、mac(messageauthenticationcode)算法等。

当服务器接收到终端设备上传的待存储图片后,可以调用第一应用程序接口采用信息摘要算法对待存储图片对应的图片数据进行消息摘要的生成,以得到该第一消息摘要。

在一实施方式中,所述通过所述第一应用程序接口计算所述待存储图片的第一消息摘要包括:

通过所述第一应用程序接口采用md算法计算所述待存储图片的第一消息摘要。

具体地,所述md(messagedigest)算法是一种信息摘要算法,按照规范版本可分为md2、md4、md5三种算法,通过该md算法生成的消息摘要都是128位的。从安全性上说,这三种算法的安全性排名如下md5>md4>md2,因而,为了提升安全性,在本实施例中,所述md算法优选为md5算法,当通过md5算法计算得到第一消息摘要时,该第一消息摘要也可以称为md5值或md5码。

本发明实施例中通过md算法计算所述待存储图片的第一消息摘要,以便可以通过摘要信息来判定数据库中是否存在相同的图片,避免重复存储图片。

在另一实施方式中,所述通过所述第一应用程序接口计算所述待存储图片的第一消息摘要包括:

通过所述第一应用程序接口采用sha算法计算所述待存储图片的第一消息摘要。

具体地,所述sha(securehashalgorithm,安全散列算法)算法也是一种信息摘要算法,sha家族具有五个算法,分别是sha-1、sha-224、sha-256、sha-384,和sha-512,其中sha-224、sha-256、sha-384,和sha-512被统称为sha-2。通过不同的sha算法生成的消息摘要的位数不同,比如通过sha-1算法生成的消息摘要的位数为160位,通过sha-224算法生成的消息摘要的位数为224位。在本实施例,具体的sha算法可根据实际情况进行选定,比如,该sha算法为sha-256。

本发明实施例中通过sha法计算所述待存储图片的第一消息摘要,以便可以通过摘要信息来判定数据库中是否存在相同的图片,避免重复存储图片。

步骤s12,判断预设的数据库中是否存储有与所述第一消息摘要相匹配的第二消息摘要。

具体地,所述预设的数据库为用于存储图片的数据库,该数据库的类型可以根据实际情况进行选定,比如为mongo数据库、redis数据库、memcache数据库等,在本实施例中,该数据库优选为mongo数据库,其是一个基于分布式文件存储的数据库,由c++语言编写。旨在为web应用提供可扩展的高性能数据存储解决方案。

本发明实施例中,可以对数据库中存储的数据进行检查,以查询数据库中是否存储有与所述第一消息摘要相匹配的第二消息摘要,其中,所述第一消息摘要与所述第二消息摘要相匹配指的是数据库中存储的第二消息摘要与第一消息摘要相同,比如,第一消息摘要为abf,若数据库中存储的第二消息摘要也为abf,则表明数据库中存在与第一消息摘要相匹配的第二消息摘要。

在一实施方式中,所述数据库为mongo数据库,所述mongo数据库的数据存储结构包括图片id字段、图片数据字段、消息摘要字段。其中,所述图片id字段为用于唯一标识一副图片的标识,不同图片对应的id字段的数据不同,通过该id字段的数据可以方便查询到图片;图片数据字段对应的数据为图片数据;消息摘要字段对应的数据为与通过对该图片数据进行消息摘要生成后得到的数。在本发明其他实施方式中,该mongo数据库的数据存储结构还包括图片后缀字段,该字段对应的数据用于区分图片的格式,即该图片属于jpg格式的图片,还是png格式的图片,或者其他格式。

在本实施例中,参阅图2,所述判断预设的数据库中是否存储有与所述第一消息摘要相匹配的第二消息摘要的步骤包括:

步骤s20,在所述mongo数据库中查找所述消息摘要字段对应的数据。

步骤s21,判断所述消息摘要字段对应的数据中是否存在与所述第一消息摘要相匹配的第二消息摘要。

具体地,由于mongo数据库中的数据存储结构中包含消息摘要字段,因此通过查找数据库中的消息摘要字段对应的数据可以找到数据库中存储的每一张图片的消息摘要。通过将查找到的各个图片的消息摘要与所述第一消息摘要进行比较,若当前查找到的消息摘要与该第一消息摘要相同,则表明存在与所述第一消息摘要相匹配的第二消息摘要;若当前查找到的消息摘要与所述第一消息摘要不同,则继续将查找到的其他图片的消息摘要与该第一消息摘要进行比较,直到查找到与该第一消息摘要相同消息摘要,或者所有图片的消息摘要都比较完成,则结束对消息摘要的查找与比较,得到判定结果。

本发明实施例中通过在所述mongo数据库中查找所述消息摘要字段对应的数据,从而可以快速地判断出是否存在与所述第一消息摘要相匹配的第二消息摘要。

步骤s13,若所述数据库中未存储有所述第二消息摘要,则将所述待存储图片存储在所述数据库中,并将所述待存储图片的存储地址返回给所述终端设备。

具体地,当数据库中未存储有所述第二消息摘要时,表明数据库中不存在与该待存储图片相同的图片,服务器可以将该待存储图片的数据进行存储,并分配一个存储地址用于在数据库中存储该待存储图片的数据,该存储地址为url(uniformresourcelocator,统一资源定位符),在一实施例中,该存储地址包括待存储图片的图片id,以便可以通过该图片id快速地查找到该待存储图片。

步骤s14,若所述数据库中存储有所述第二消息摘要,则返回与所述第二消息摘要相关联的图片的存储地址给所述终端设备。

具体地,当数据库中存储有所述第二消息摘要时,表明数据库中存在与该待存储图片相同的图片,为了避免重重存储图片,服务器可以将该待存储图片的数据进行丢弃,从而来节省存储空间。同时,为了便于终端设备可以查询该与所述第二消息摘要相关联的图片,服务器会返回与所述第二消息摘要相关联的图片的存储地址给所述终端设备,这样,终端设备通过该存储地址即可查询到该图片。

本发明实施例通过接收终端设备通过第一应用程序接口上传的待存储图片;通过所述第一应用程序接口计算所述待存储图片的第一消息摘要;判断预设的数据库中是否存储有与所述第一消息摘要相匹配的第二消息摘要;若所述数据库中未存储有所述第二消息摘要,则将所述待存储图片存储在所述数据库中,并将所述待存储图片的存储地址返回给所述终端设备;若所述数据库中存储有所述第二消息摘要,则返回与所述第二消息摘要相关联的图片的存储地址给所述终端设备。本发明实施例通过在将图片存储至数据库之前,计算该图片的信息摘要,以便可以根据该信息摘要确定数据库中是否存在该图片,并在确定数据库中不存在该图片时,才存储该图片,从而可以不对相同的图片重复进行存储,节省存储空间。

本发明实施例提供了另一种图片存储方法,本实施例基于上述实施例,如图3所示,所述方法还包括:

步骤s30,接收所述终端设备通过第二应用程序接口发送的图片查询指令,所述图片查询指令包括待查询图片的存储地址,所述待查询图片的存储地址包含待查询图片的图片id。

具体地,服务器对外提供第二应用程序接口(api,applicationprogramminginterface),以供终端设备通过该第二应用程序接口从服务器中查询图片,即该第一二应用程序接口为用于查询图片的接口。终端设备上具有相应的应用客户端或网页客户端,用户可以通过终端设备中的应用客户端或网页客户端将图片查询指令发送至服务器中。当需要从服务器中查询图片时,终端设备按照该第二应用程序接口的规范,将图片查询指令的数据进行封装,然后将封装后的图片查询数据通过该第二应用程序接口发送至服务器,从而使得服务器可以接收到终端设备发送的图片查询指令。在本实施例中,该图片查询指令中包括待查询图片的存储地址,所述存储地址包含图片id。在本实施例中,该存储地址为待存储图片的url(uniformresourcelocator,统一资源定位符),该图片id可以在该url中。

需要说明的是,本实施例中的第二应用程序接口与上述实施例中的第一应用程序接口优选为通过golang语言编写的,当然,在本发明其他实施例中,也可以采用其他语言进行编写,比如采用c语言,c++语言等。

本发明实施例中,通过golang语言编写第一应用程序接口与第二应用程序接口,从而可以使得本发明实施例中的服务器可以在单机上部署,具有部署快速以及性能稳定的优点。

步骤s31,根据所述图片id在所述mongo数据库中查询所述待查询图片。

具体地,由于mongo数据库中用于存储图片数据的mongo存储结构包括图片id字段,因而,通过该图片id可以快速查找到该待查询图片。

步骤s32,在查询到所述待查询图片时,将所述待查询图片对应的图片数据返回给所述终端设备,以使所述终端设备根据所述图片数据显示所述待查询图片。

具体地,在查找到所述待查询图片时,服务器会将该待查询图片对应的图片数据返回给所述终端设备,在返回该图片数据时,服务器还会在图片数据中增设content-type字段数据以及accept-range字段数据,其中,字段数据用于告诉终端设备实际返回的图片内容的内容类型,accept-range字段数据用于表明服务器是否支持断点请求,若支持,则在终端设备网络中断之后,恢复网络之后可以继续获取剩下的数据,从不用重新开始获取数据。

终端设备在接收到服务器返回的图片数据之后,即可以根据该图片数据进行图片的显示。

本发明实施例中,通过图片id进行图片的查询,从而可以提高图片查询的效率。

参阅图4所示,是本发明图片存储装置400一实施例的程序模块图。该图片存储装置400应用于服务器中。

本实施例中,所述图片存储装置400包括一系列的存储于存储器上的计算机程序指令,当该计算机程序指令被处理器执行时,可以实现本发明各实施例的图片存储功能。在一些实施例中,基于该计算机程序指令各部分所实现的特定的操作,图片存储装置400可以被划分为一个或多个模块。例如,在图4中,所述图片存储装置400可以被分割成接收模块401、计算模块402、判断模块403、存储模块404以及返回模块405。其中:

接收模块401,用于接收终端设备通过第一应用程序接口上传的待存储图片;

具体地,所述终端设备可以以多种形式存在,包括但不限于:

(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iphone)、多媒体手机、功能性手机,以及低端手机等。

(2)超移动个人服务器:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:pda、mid和umpc设备等,例如ipad。

(3)其他具有数据交互功能的电子装置。

在本实施例中,服务器对外提供第一应用程序接口(api,applicationprogramminginterface),以供终端设备通过该第一应用程序接口将图片存储在服务器中,即该第一应用程序接口为用于存储图片的接口。终端设备上具有相应的应用客户端或网页客户端,用户可以通过终端设备中的应用客户端或网页客户端将图片存储至服务器中。当需要将终端设备存储至服务器中时,终端设备按照该第一应用程序接口的规范,将待存储图片的数据进行封装,然后将封装后的图片数据通过该第一应用程序接口进行上传,从而使得服务器的接收模块401可以接收到终端设备上传的待存储图片。

计算模块402,用于通过所述第一应用程序接口计算所述待存储图片的第一消息摘要。

具体地,消息摘要(messagedigest)又称为数字摘要(digitaldigest)。它是一个唯一对应一个消息或文本的固定长度的值,它由消息摘要算法对消息进行作用而产生。如果消息在途中改变了,则接收者通过对收到消息的新产生的摘要与原摘要比较,就可知道消息是否被改变了。因此消息摘要保证了消息的完整性。在本实施例中,该消息摘要算法可以为md算法、sha算法、mac(messageauthenticationcode)算法等。

当服务器的接收模块401接收到终端设备上传的待存储图片后,计算模块402可以调用第一应用程序接口采用信息摘要算法对待存储图片对应的图片数据进行消息摘要的生成,以得到该第一消息摘要。

在一实施方式中,所述计算模块402还用于通过所述第一应用程序接口采用md算法计算所述待存储图片的第一消息摘要。

具体地,所述md(messagedigest)算法是一种信息摘要算法,按照规范版本可分为md2、md4、md5三种算法,通过该md算法生成的消息摘要都是128位的。从安全性上说,这三种算法的安全性排名如下md5>md4>md2,因而,为了提升安全性,在本实施例中,所述md算法优选为md5算法,当通过md5算法计算得到第一消息摘要时,该第一消息摘要也可以称为md5值或md5码。

在另一实施方式中,所述计算模块402还用于通过所述第一应用程序接口采用sha算法计算所述待存储图片的第一消息摘要。

具体地,所述sha(securehashalgorithm,安全散列算法)算法也是一种信息摘要算法,sha家族具有五个算法,分别是sha-1、sha-224、sha-256、sha-384,和sha-512,其中sha-224、sha-256、sha-384,和sha-512被统称为sha-2。通过不同的sha算法生成的消息摘要的位数不同,比如通过sha-1算法生成的消息摘要的位数为160位,通过sha-224算法生成的消息摘要的位数为224位。在本实施例,具体的sha算法可根据实际情况进行选定,比如,该sha算法为sha-256。

判断模块403,用于判断预设的数据库中是否存储有与所述第一消息摘要相匹配的第二消息摘要。

具体地,所述预设的数据库为用于存储图片的数据库,该数据库的类型可以根据实际情况进行选定,比如为mongo数据库、redis数据库、memcache数据库等,在本实施例中,该数据库优选为mongo数据库,其是一个基于分布式文件存储的数据库,由c++语言编写。旨在为web应用提供可扩展的高性能数据存储解决方案。

本发明实施例中,判断模块403可以对数据库中存储的数据进行检查,以查询数据库中是否存储有与所述第一消息摘要相匹配的第二消息摘要,其中,所述第一消息摘要与所述第二消息摘要相匹配指的是数据库中存储的第二消息摘要与第一消息摘要相同,比如,第一消息摘要为abf,若数据库中存储的第二消息摘要也为abf,则表明数据库中存在与第一消息摘要相匹配的第二消息摘要。

在一实施方式中,所述数据库为mongo数据库,所述mongo数据库的数据存储结构包括图片id字段、图片数据字段、消息摘要字段。其中,所述图片id字段为用于唯一标识一副图片的标识,不同图片对应的id字段的数据不同,通过该id字段的数据可以方便查询到图片;图片数据字段对应的数据为图片数据;消息摘要字段对应的数据为与通过对该图片数据进行消息摘要生成后得到的数。在本发明其他实施方式中,该mongo数据库的数据存储结构还包括图片后缀字段,该字段对应的数据用于区分图片的格式,即该图片属于jpg格式的图片,还是png格式的图片,或者其他格式。

在本实施例中,所述判断模块403还用于在所述mongo数据库中查找所述消息摘要字段对应的数据;以及用于判断所述消息摘要字段对应的数据中是否存在与所述第一消息摘要相匹配的第二消息摘要。

具体地,由于mongo数据库中的数据存储结构中包含消息摘要字段,因此通过查找数据库中的消息摘要字段对应的数据可以找到数据库中存储的每一张图片的消息摘要。通过将查找到的各个图片的消息摘要与所述第一消息摘要进行比较,若当前查找到的消息摘要与该第一消息摘要相同,则表明存在与所述第一消息摘要相匹配的第二消息摘要;若当前查找到的消息摘要与所述第一消息摘要不同,则继续将查找到的其他图片的消息摘要与该第一消息摘要进行比较,直到查找到与该第一消息摘要相同消息摘要,或者所有图片的消息摘要都比较完成,则结束对消息摘要的查找与比较,得到判定结果。

存储模块404,用于若所述数据库中未存储有所述第二消息摘要,则将所述待存储图片存储在所述数据库中,并将所述待存储图片的存储地址返回给所述终端设备。

具体地,当数据库中未存储有所述第二消息摘要时,表明数据库中不存在与该待存储图片相同的图片,存储模块404可以将该待存储图片的数据进行存储,并分配一个存储地址用于在数据库中存储该待存储图片的数据,该存储地址为url(uniformresourcelocator,统一资源定位符),在一实施例中,该存储地址包括待存储图片的图片id,以便可以通过该图片id快速地查找到该待存储图片。

所述存储模块404,还用于若所述数据库中存储有所述第二消息摘要,则返回与所述第二消息摘要相关联的图片的存储地址给所述终端设备。

具体地,当数据库中存储有所述第二消息摘要时,表明数据库中存在与该待存储图片相同的图片,为了避免重重存储图片,存储模块404可以将该待存储图片的数据进行丢弃,从而来节省存储空间。同时,为了便于终端设备可以查询该与所述第二消息摘要相关联的图片,存储模块404还会返回与所述第二消息摘要相关联的图片的存储地址给所述终端设备,这样,终端设备通过该存储地址即可查询到该图片。

本发明实施例通过接收终端设备通过第一应用程序接口上传的待存储图片;通过所述第一应用程序接口计算所述待存储图片的第一消息摘要;判断预设的数据库中是否存储有与所述第一消息摘要相匹配的第二消息摘要;若所述数据库中未存储有所述第二消息摘要,则将所述待存储图片存储在所述数据库中,并将所述待存储图片的存储地址返回给所述终端设备;若所述数据库中存储有所述第二消息摘要,则返回与所述第二消息摘要相关联的图片的存储地址给所述终端设备。本发明实施例通过在将图片存储至数据库之前,计算该图片的信息摘要,以便可以根据该信息摘要确定数据库中是否存在该图片,并在确定数据库中不存在该图片时,才存储该图片,从而可以不对相同的图片重复进行存储,节省存储空间。

进一步地,在一示例性的实施例中,所述图片存储装置400还包括:查询模块。

所述接收模块401,还用于接收所述终端设备通过第二应用程序接口发送的图片查询指令,所述图片查询指令包括待查询图片的存储地址,所述待查询图片的存储包括图片id。

具体地,服务器对外提供第二应用程序接口(api,applicationprogramminginterface),以供终端设备通过该第二应用程序接口从服务器中查询图片,即该第一二应用程序接口为用于查询图片的接口。终端设备上具有相应的应用客户端或网页客户端,用户可以通过终端设备中的应用客户端或网页客户端将图片查询指令发送至服务器中。当需要从服务器中查询图片时,终端设备按照该第二应用程序接口的规范,将图片查询指令的数据进行封装,然后将封装后的图片查询数据通过该第二应用程序接口发送至服务器,从而使得服务器的接收模块401可以接收到终端设备发送的图片查询指令。在本实施例中,该图片查询指令中包括待查询图片的图片id。在本实施例中,该图片查询指令中包括待查询图片的存储地址,所述存储地址包含图片id。在本实施例中,该存储地址为待存储图片的url(uniformresourcelocator,统一资源定位符),该图片id可以在该url中。

需要说明的是,本实施例中的第二应用程序接口与上述实施例中的第一应用程序接口优选为通过golang语言编写的,当然,在本发明其他实施例中,也可以采用其他语言进行编写,比如采用c语言,c++语言等。

本发明实施例中,通过golang语言编写第一应用程序接口与第二应用程序接口,从而可以使得本发明实施例中的服务器可以在单机上部署,具有部署快速以及性能稳定的优点。

查询模块,用于根据所述图片id在所述mongo数据库中查询所述待查询图片。

具体地,由于mongo数据库中用于存储图片数据的mongo存储结构包括图片id字段,因而,通过该图片id可以快速查找到该待查询图片。

所述返回模块405,还用于在查询到所述待查询图片时,将所述待查询图片对应的图片数据返回给所述终端设备,以使所述终端设备根据所述图片数据显示所述待查询图片。

具体地,在查找到所述待查询图片时,返回模块405会将该待查询图片对应的图片数据返回给所述终端设备,在返回该图片数据时,返回模块405还会在图片数据中增设content-type字段数据以及accept-range字段数据,其中,字段数据用于告诉终端设备实际返回的图片内容的内容类型,accept-range字段数据用于表明服务器是否支持断点请求,若支持,则在终端设备网络中断之后,恢复网络之后可以继续获取剩下的数据,从不用重新开始获取数据。

终端设备在接收到服务器的返回模块405返回的图片数据之后,即可以根据该图片数据进行图片的显示。

本发明实施例中,通过图片id进行图片的查询,从而可以提高图片查询的效率。

参阅图5所示,是本发明服务器5的硬件架构示意图。本实施例中,服务器5是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。例如,机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图5所示,服务器5至少包括但不限于:可通过系统总线相互通信链接存储器501、处理器502、网络接口503。其中:

存储器501至少包括一种类型的计算机可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器501可以是服务器5的内部存储模块,例如该服务器5的硬盘或内存。在另一些实施例中,存储器501也可以是服务器5的外部存储设备,例如该服务器5上配备的插接式硬盘,智能存储卡(smartmediacard,简称为smc),安全数字(securedigital,简称为sd)卡,闪存卡(flashcard)等。当然,存储器501还可以既包括服务器5的内部存储模块也包括其外部存储设备。本实施例中,存储器501通常用于存储安装于服务器5的操作系统和各类应用软件,例如图片存储方法的程序代码等。此外,存储器501还可以用于暂时地存储已经输出或者将要输出的各类数据。

处理器502在一些实施例中可以是中央处理器(centralprocessingunit,简称为cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器502通常用于控制服务器5的总体操作,例如执行与服务器5进行数据交互或者通信相关的控制和处理等。本实施例中,处理器502用于运行存储器501中存储的程序代码或者处理数据。

网络接口503可包括无线网络接口或有线网络接口,该网络接口503通常用于在服务器5与其他服务器之间建立通信链接。例如,网络接口503用于通过网络将服务器5与外部终端相连,在服务器5与外部终端之间的建立数据传输通道和通信链接等。网络可以是企业内部网(intranet)、互联网(internet)、全球移动通讯系统(globalsystemofmobilecommunication,简称为gsm)、宽带码分多址(widebandcodedivisionmultipleaccess,简称为wcdma)、4g网络、5g网络、蓝牙(bluetooth)、wi-fi等无线或有线网络。

需要指出的是,图5仅示出了具有部件501~503的服务器,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。

在本实施例中,存储于存储器501中的图片存储方法还可以被分割为一个或者多个程序模块,并由一个或多个处理器(本实施例为处理器502)所执行,以完成本发明。

本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质其上存储有计算机程序,计算机程序被处理器执行时实现实施例中的图片存储方法的步骤。本实施例中,计算机可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,计算机可读存储介质可以是服务器的内部存储单元,例如该服务器的硬盘或内存。在另一些实施例中,计算机可读存储介质也可以是服务器的外部存储设备,例如该服务器上配备的插接式硬盘,智能存储卡(smartmediacard,简称为smc),安全数字(securedigital,简称为sd)卡,闪存卡(flashcard)等。当然,计算机可读存储介质还可以既包括服务器的内部存储单元也包括其外部存储设备。本实施例中,计算机可读存储介质通常用于存储安装于服务器的操作系统和各类应用软件,例如实施例中的图片存储方法的程序代码等。此外,计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的各类数据。

显然,本领域的技术人员应该明白,上述的本发明实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明实施例不限制于任何特定的硬件和软件结合。

通过以上的实施方式的描述,本领域普通技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1