CN110650164B - 文件的上传方法、装置、终端以及计算机存储介质 - Google Patents
文件的上传方法、装置、终端以及计算机存储介质 Download PDFInfo
- Publication number
- CN110650164B CN110650164B CN201810672831.1A CN201810672831A CN110650164B CN 110650164 B CN110650164 B CN 110650164B CN 201810672831 A CN201810672831 A CN 201810672831A CN 110650164 B CN110650164 B CN 110650164B
- Authority
- CN
- China
- Prior art keywords
- file
- uploading
- state
- index information
- information
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种文件的上传方法、上传装置、上传终端以及计算机存储介质,包括:获取文件的索引信息;从所述索引信息中获取所述文件的定位信息,并将定位信息存储至队列存储***中;从队列存储***中获得所述定位信息,进而利用定位信息获得所述文件并将其上传到分布式文件***以备调取。通过上述方式,很方便快捷的将文件上传到分布式***中。
Description
技术领域
本申请涉及文件上传技术领域,特别是涉及一种文件的上传方法、上传装置、上传终端以及计算机存储介质。
背景技术
在日常生活中,无论是下载的文件或者是本地存储的文件,一般都是存储在本地的服务器或者存储器中。
但是随着来自网络的或来自企业自身的数据存储需求越来越大,传统意义的文件***由于空间不足,处理能力有限等已经不能满足现有的大容量、高可靠性以及易扩展等要求。因此,近几年分布式文件***由于其具有高可用、高性能、冗余备份等优势,得到了快速发展。
然而,虽然分布式文件***解决了高性能易扩展的文件存储问题,但是在文件上传时,由于一般需要上传的文件大,现有的普通上传方式已经不能满足大批量文件上传的需求。
发明内容
本申请主要解决的技术问题是提供一种文件的上传方法、上传装置、上传终端以及计算机存储介质,能够很方便快捷的将文件上传到分布式***中。
为解决上述技术问题,本申请采用的第一个技术方案是:提供一种文件的上传方法,包括:获取文件的索引信息;从索引信息中获取文件的定位信息,并将定位信息存储至队列存储***中;从队列存储***中获得定位信息,进而利用定位信息获得文件并将其上传到分布式文件***以备调取。
其中,获取文件的索引信息之后包括:将索引信息保存到数据库中;将索引信息在数据库中的状态设置为初始状态;从队列存储***中获得定位信息之后包括:若获取到所述定位信息,将索引信息在数据库中的状态由初始状态更改为第一状态。
其中,所述定位信息包括所述文件的存储路径;
利用定位信息获得文件并将其上传到分布式文件***包括:若上传成功,则将索引信息在数据库中的状态由第一状态更改为第二状态,并在数据库中保存索引信息存入分布式文件***后的地址;如因为所述存储路径无效而上传失败,则将所述索引信息在所述数据库中的状态由所述第一状态更改为第三状态;若因为文件的内容为空而上传失败,则将索引信息在数据库中的状态由第一状态更改为第四状态;若因为网络原因而上传失败,将索引信息在数据库中的状态由第一状态更改为初始状态。
其中,获取文件的索引信息的步骤之前包括:从第三方服务器下载符合设定条件的文件;与第三方服务器建立连接,按照设定频率从第三方服务器批量下载符合设定条件的文件;对下载的文件进行检测,判断文件是否完整;如果文件不完整,则重新下载文件;如果文件完整,则执行获取文件的索引信息的步骤。
其中,对下载的文件进行检测,判断文件是否完整的步骤具体包括:获取文件的MD5值,将MD5值与文件的原始MD5值相比较,判断MD5值与原始MD5值是否相等;如果MD5值与原始MD5值相等,确定文件完整;否则,确定音频不完整。
其中,队列存储***为Redis存储***;从队列存储***中获得定位信息,利用定位信息获得文件并将其上传到分布式文件***的步骤具体包括:确定待上传的文件;采用单线程串行的方式从redis存储***中获得定位信息,进而利用定位信息获得文件并将其上传到分布式文件***。
其中,从队列存储***中获得定位信息,利用定位信息获得文件并将其上传到分布式文件***的步骤之后还包括:删除上传后的文件在队列存储***中的定位信息。
为解决上述技术问题,本申请采用的第二个技术方案是:提供一种文件的上传装置,上传装置包括:索引信息获取模块,用于获取所述文件的索引信息;定位信息获取模块,用于从所述索引信息中获取所述文件的定位信息,并将所述定位信息存储至队列存储***中;文件上传模块,用于从所述队列存储***中获得所述定位信息,利用所述定位信息获得所述文件并将所述文件上传到分布式文件***。
其中,索引信息获取模块还用于将所述索引信息保存到数据库中;
将所述索引信息在所述数据库中的状态设置为初始状态;所述定位信息获取模块还用于若获取到所述定位信息,将所述索引信息在所述数据库中的状态由所述初始状态更改为第一状态。
其中,所述定位信息包括所述文件的存储路径;
所述文件上传模块还用于若上传成功,则将所述索引信息在所述数据库中的状态由所述第一状态更改为第二状态,并在所述数据库中保存所述索引信息存入所述分布式文件***后的地址;如因为所述存储路径无效而上传失败,则将所述索引信息在所述数据库中的状态由所述第一状态更改为第三状态;若因为所述文件的内容为空而上传失败,则将所述索引信息在所述数据库中的状态由所述第一状态更改为所述第四状态;若因为网络原因而上传失败,则将所述索引信息在所述数据库中的状态由所述第一状态更改为所述初始状态。
其中,所述文件的上传装置还包括下载模块,所述下载模块用于与第三方服务器建立连接,按照设定频率从所述第三方服务器批量下载所述符合设定条件的文件;对下载的文件进行检测,判断所述文件是否完整;如果所述文件不完整,则重新下载所述文件,如果所述文件完整,则所述索引信息获取模块获取所述文件的索引信息。
其中,所述下载模块具体用于获取所述文件的MD5值,将所述MD5值与所述文件的原始MD5值相比较,判断所述MD5值与所述原始MD5值是否相等;如果所述MD5值与所述原始MD5值相等,确定所述文件完整;否则,确定所述文件不完整。
其中,所述队列存储***为redis存储***;所述定位信息获取模块具体用于确定待上传的文件;采用单线程串行的方式从所述redis存储***中获得所述定位信息,利用所述定位信息获得所述文件并将所述文件上传到所述分布式文件***。
其中,所述文件上传模块还用于在从所述队列存储***中获得所述定位信息,利用所述定位信息获得所述文件并将所述文件上传到分布式文件***之后,删除上传后的所述文件在所述队列存储***中的定位信息。
为解决上述技术问题,本申请采用的第三个技术方案是:提供一种文件的上传终端,包括相互耦接的处理器和通信电路,通信电路用于与第三方服务器处理器在工作时配合通信电路实现上述任一实施方式的文件的上传方法。
为解决上述技术问题,本申请采用的第四个技术方案是:提供一种计算机存储介质,计算机存储介质上存储有程序数据,程序数据被处理器执行时实现上述任一项的文件的上传方法。
相对于现有技术,本申请的有益效果是:本实施方式获取文件的索引信息,从索引信息中获取文件的定位信息,相比于现有技术,能够更加快速的提取到文件的定位信息,加快后续在上传文件时对文件的识别速度,避免造成上传文件时服务器的拥堵,加快上传速度。将定位信息存储至队列存储***中,从队列存储***中获得定位信息,通过从队列存储***获取的方式,再进一步加快文件获取速度的同时,也不会造成文件上传顺序的混乱和遗漏,使文件能够快速完整的上传到分布式文件***中。
附图说明
图1是本申请文件的上传方法一实施例的流程示意图;
图2是本申请文件的上传方法另一实施方式的流程示意图;
图3是本申请文件的上传方法再一实施方式的流程示意图;
图4是本申请文件的上传装置一实施方式的结构示意图;
图5是本申请文件的上传装置另一实施方式的结构示意图;
图6是本申请文件的上传终端一实施方式的结构示意图;
图7是本申请计算机存储介质一实施例的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,均属于本申请保护的范围。
分布式文件***是一个开源的轻量级分布式文件***,由于其具备良好的文件存储、文件同步以及文件访问功能,能够有效的平衡大容量存储和负载均衡的问题,本申请是将来自本地或第三方下载的文件上传到该分布式文件***中,如FastDFS分布式***、GFS分布式文件***、TFS分布式文件***、HDFS分布式文件***等。
具体地,如图1所示,图1为本申请文件的上传方法一实施方式的流程示意图。本实施方式的文件的上传方法包括:
步骤101:获取文件的索引信息。
其中,上述文件包括音频文件、图片文件、视频文件以及文档文件中的至少一种。
为了加快对待上传文件的识别,本实施方式中,首先从数据库中获取文件的索引信息。
该索引信息包括文件在上述数据库中的存储地址、编号、文件的获取时间、文件大小中的至少一种,以该文件为音频文件如录音文件为例来说,该索引信息包括录音的起始时间、结束时间、通话双方的身份信息如电话号码,以及该音频文件的编号,通常该编号都是唯一的ID号。在完成对文件的索引信息的存储后,为了方便对文件不同处理状态或有效性的区分,在数据库中将该文件对应的索引信息的状态字都设置为初始状态,比如将初始状态设置为0。
步骤102:从索引信息中获取文件的定位信息,并将定位信息存储至队列存储***中。
其中,该定位信息至少包括该文件的存储路径以及编号两个字段。
该队列存储器可以为任一队列存储器,如kafaka队列。本实施方式中,为了提高终端将文件上传到分布式文件***中的速率,将文件的定位信息保存到redis存储***中,使终端或服务器在调取文件的存储路径时更加高效。
其中,Redis存储***是一个高性能的key-value存储***,提供5种数据类型:字符串string,哈希类型hash,链表list,集合set以及有序集合sorted set,并且这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的,处理速度快。本实施方式中是通过调用该Redis存储***中的操作指令来实现定位信息的抓取和存储。
在本实施方式中,通过链表list数据结构来作为文件的定位信息的消息队列。具体地,从存储在数据库中的索引信息获取到文件的存储路径以及编号后,如获取索引信息的特定字段的信息来获得文件在数据库中的存储路径和文件的编号,通过push操作将该存储路径和编号推送到redis存储***中。每次存储定位信息的数量可以为单个或多个,只需要在配置文件中进行设置即可,在此不做限定。
为了方便区分已经完成定位信息存储的索引信息和未完成的索引信息,在一个优选的实施方式中,每完成一件索引信息的定位信息的存储后,判断是否获取到该定位信息,如果获取到该定位信息,将索引信息在数据库中的状态由初始状态变更为第一状态,例如将该索引信息在数据库中的状态字由0变成1,若未获取到该定位信息,如返回获取失败的提示信息,保持索引信息在数据库中的原始状态,以重新获取。
通过这种变换状态的方式能够有效快速地确定索引信息的定位信息是否存储成功,避免出现重复处理或漏处理,提高工作效率。
步骤103:从队列存储***中获得定位信息,利用定位信息获得文件并将其上传到分布式文件***。
为了方便后续对文件的查询、存储和使用,本实施方式中进一步地将文件上传到分布式文件***中。
优选地,本实施方式采用的分布式***为Fast分布式文件***。
具体地,本实施方式采用redis存储***,确定待上传的文件后,如通过预设条件日期确定待上传的文件后,采用单线程串行的方式从redis存储***中获取待上传的文件的定位信息中的存储路径,调用存储路径从终端服务器中提取文件,并上传至分布式文件***。在调取过程中,可通过编号进行核对文件是否正确,避免出现文件上传错误的问题。
本实施方式中,通过单线程串行的方式从redis存储***中获取待上传的文件的存储地址,能够避免多线程同时处理造成的***或网络紊乱,且由于redis存储***本身的毫秒级的处理速度,即使是单线程执行,也不会造成过多的任务等待,能够有效满足文件的上传需求。
在一个具体的实施方式中,通过执行pop操作从redis存储***中获取文件的存储路径,将该存储路径作为调用参数传输给对应的模板方法,如upLoad()方法,该模板方法通过调用该存储地址,获得该文件并将该文件上传到分布式文件***中,方便后续调用。
在一个可选的实施方式中,为了节省队列资源,如redis资源,提高处理速度,每一组定位信息被调用后,将该定位信息从redis存储***中删除。
进一步地,为了节省终端服务器的资源,在每一个文件上传成功后,将该文件从终端或服务器中删除。
在上述任一实施方式中,为了获知文件是否上传成功,进一步地对文件的上传状态进行检测,如通过分布式文件***的反馈信息来确定文件上传的状态。
具体地,如果文件上传成功,分布式文件***返回该文件在分布式文件***中的存储地址url,终端或服务器接收到该反馈后,在数据库中保存该文件存入分布式文件***后的地址,将该索引信息在数据库中的状态更改为第二状态,如将该索引信息的状态字由1更改为3。
如果文件上传不成功,由于产生上传失败的原因可能有很多,因此,需要对上传失败的原因进行分析。具体地,捕获当前上传失败的异常事件,根据该异常事件产生的原因更改索引信息在数据库中的状态。
首先判断文件的定位信息如存储路径是否有效,如判断该存储路径的格式是否正确或该存储路径是否为空,如果该存储路径的格式不正确获取该存储路径为空即确定该存储路径无效,将该索引信息在数据库中的状态更改为第三状态,如将索引信息的状态字由1变更为2。
如果存储路径有效,判断待上传的文件的内容是否为空,如分布式文件***返回的信息为FileNotFoundException,即找不到文件的提示信息,确定所述待上传的文件的内容为空,将该文件的索引信息在数据库中的状态更改为上传正常的第四状态,如将该索引信息的状态字由1变更为4。
在文件上传过程中,有时会不可避免的出现网络抖动等不可控的异常情况而导致文件上传失败,将该索引信息在数据库中的状态更新为初始状态,如将状态字由1变更为0。
终端或处理器再次搜索状态为初始状态的待上传文件时,会重新执行获取该索引信息的定位信息,将该定位信息存储至队列如redis存储***中,调用redis存储***中的存储地址从数据库中提取文件,上传至所分布式文件***。通过更新索引信息在数据库的状态来自动触发***重新上传文件,不仅能够有效避免文件的丢失,而且能够减少人工的操作。
需要说明的是,上述判断异常事件产生原因的过程并非固定,可根据需要灵活调整判断上传失败的原因,如先判断文件是否为空,或先判断网络是否出现抖动等,只要是根据上传原因更改文件在数据库中的状态的技术方案都属于本申请的保护范围。
在另一个实施方式中,当需要上传的文件存储在第三方服务器时,为了上传属于本实施本地的文件,需要先从第三方服务器下载文件,具体地,如图2所示,图2是本申请文件的上传方法另一实施方式的流程示意图。本实施方式的上传方法包括如下步骤:
步骤201:从第三方服务器下载符合设定条件的文件。
具体地,先通过终端或终端所在的当地服务器与该第三方服务器建立连接,再从第三方服务器下载符合设定条件的文件。
该终端包括PC机、平板电脑以及智能手机等智能设备。
设定条件为下载文件的范围限定信息,如身份信息或归属名称等。
当文件是持续产生时,对音频下载的频率进行限定,如设定频率为每天一次或每周一次。
在一个具体的实施方式中,为了使数据下载过程更加顺畅,使用JAVA架构下的jsch开源框架来操作第三方服务器,如SFTP服务器。
可选地,当终端或服务器有多个文件下载任务时,为了避免同一配置下多个下载任务之间出现串扰、重复下载或漏下载,在一个优选的实施方式中,对每一个下载任务进行注解操作,指定本次任务的作用范围,如通过添加spring注解来实现,在此不做限制。
进一步地,本实施方式的终端支持断点下载,即本次下载未完成时,能够保留当前的断点记录,下次相同的终端再次连接时,可接着该断点处下载,而无需重新下载,节省时间,也节省处理器资源。
步骤202:获取所述文件的索引信息。
在下载完成后,该文件存储在终端的数据库或服务器中,下载的文件一般为压缩文件,因此,先对压缩文件进行解压。
索引信息的获取过程与步骤101相同,具体请参阅步骤101中的相关文字描述,再次不再赘述。
步骤203:从索引信息中获取文件的定位信息,并将定位信息存储至队列存储***中。
该步骤与步骤102相同,具体请参阅步骤102中的相关文字描述,在此不再赘述。
步骤204:从队列存储***中获得定位信息,利用定位信息获得文件并将其上传到分布式文件***。
该步骤与步骤103相同,具体请参阅步骤103中的相关文字描述,在此不再赘述。
区别于现有技术,本实施方式首先获取待上传文件的索引信息,从该索引信息中获取文件的定位信息,相比于现有技术,能够更加快速的提取到文件的定位信息,加快后续在上传文件时对文件的识别速度,避免造成上传文件时服务器的拥堵,加快上传速度。将定位信息存储至队列存储***中,从队列存储***中获得定位信息,通过从队列存储***获取的方式,再进一步加快文件获取速度的同时,也不会造成文件上传顺序的混乱和遗漏,使文件能够快速完整的上传到分布式文件***中。
在另一实施方式中,将文件的存储路径以及编号保存到redis存储***中,由于redis存储***的毫秒级处理速度,使终端或处理器在调取文件的存储路径时更加高效。
在其他实施方式中,在对文件进行下载时,虽然显示下载完成,但是由于网络抖动或串扰等其他原因造成文件下载的可能并不完整,在本实施方式中,为了保证文件的完整性,如图3所示,在完成步骤301:从第三方服务器下载符合设定条件的文件之后,还包括如下步骤:
步骤302:对下载的文件进行检测,判断文件是否完整。
如果检测文件完整,则执行步骤303。如果检测到文件不完整,则返回执行步骤301。
MD5校验是通过对接收的文件执行散列运算来检查数据的正确性。通过散列运算,可计算出散列值,将计算出的散列值和随数据传输的散列值比较。如果两个值相同,说明传输的数据完整无误、没有被窜改过。本实施方式中就是通过检测MD5值来判断接收到的文件是否完整。
具体地,终端或处理器获取下载的文件的MD5值,将该MD5值与第三方服务器提供的该文件的原始MD5值进行比较,判断二者是否相同。如果该MD5值与第三方服务器提供的该文件的原始MD5值相同,则确定该文件完整,如果该MD5值与原始MD5值不相等,则确定该文件不完整。
303:获取文件的索引信息。
304:从索引信息中获取文件的定位信息,并将定位信息存储至队列存储***中。
305:从队列存储***中获得定位信息,利用定位信息获得文件并将其上传到分布式文件***以备调取。
其中,步骤303-305与步骤101-104相同,具体请参阅图1及其相关文字描述,在此不再赘述。
区别于上述实施方式,本实施方式中在下载到文件后,先对下载的文件的完整性进行检测,在检测不完整时,直接重新下载,能够保证后续上传的每一个文件都是完整的,从源头上解决由于文件不完整而带来的上传不成功。且本实施方式中,是在下载下来后即可进行检测,避免对不完整的文件做进一步处理,节省处理器内存资源。
参阅图4,图4是本申请文件的上传装置一实施方式的结构示意图。如图4所示,本实施方式的上传装置包括索引信息获取模块401,定位信息获取模块402以及文件上传模块403。
索引信息获取模块401用于获取文件的索引信息。
其中,上述文件包括音频文件、图片文件、视频文件以及文档文件中的至少一种。该索引信息包括文件在上述数据库中的存储地址、编号、文件的获取时间、文件大小中的至少一种,以该文件为音频文件如录音文件为例来说,该索引信息包括录音的起始时间、结束时间、通话双方的身份信息如电话号码,以及该音频文件的编号,通常该编号都是唯一的ID号。
该索引信息获取模块401用于实现步骤101,具体请参阅步骤101中的相关文件描述。
定位信息获取模块402用于从所述索引信息中获取所述文件的定位信息,并将所述定位信息存储至队列存储***中。
其中,该定位信息至少包括该文件的存储路径以及编号两个字段。
该队列存储器可以为任一队列存储器,如kafaka队列。
本实施方式中,为了提高终端将文件上传到分布式文件***中的速率,将文件的定位信息保存到redis存储***中,使终端或服务器在调取文件的存储路径时更加高效。
本实施方式中,定位信息获取模块402用于实现步骤202,具体请参阅步骤101中的相关文字描述。
文件上传模块403用于从所述队列存储***中获得所述定位信息,利用所述定位信息获得所述文件并将其上传到分布式文件***。
本实施方式采用的分布式***为Fast分布式文件***。
本实施方式中,文件上传模块403通过单线程串行的方式从redis存储***中获取待上传的文件的存储地址,能够避免多线程同时处理造成的***或网络紊乱,且由于redis存储***本身的毫秒级的处理速度,即使是单线程执行,也不会造成过多的任务等待,能够有效满足文件的上传需求。
进一步地,为了节省终端服务器的资源,文件上传模块403在每一个文件上传成功后,将该文件从终端或服务器中删除。
在上述任一实施方式中,文件上传模块403为了获知文件是否上传成功,进一步地对文件的上传状态进行检测,如通过分布式文件***的反馈信息来确定文件上传的状态。
其中检测的过程以及状态的变更方式请参阅步骤103中的相关文字描述,在此不再赘述。
在另一个实施方式中,当需要上传的文件存储在第三方服务器时,为了上传属于本实施本地的文件,需要先从第三方服务器下载文件,区别上述实施方式的上传终端,本实施方式的文件的上传装置还包括下载模块504,该下载模块504用于从第三方服务器下载符合设定条件的文件。
该终端包括PC机、平板电脑以及智能手机等智能设备。
设定条件为下载文件的范围限定信息,如身份信息或归属名称等。
当文件是持续产生时,对音频下载的频率进行限定,如设定频率为每天一次或每周一次。
该下载模块504下载文件的方式和处理方式与步骤201相同,具体请参阅步骤201,再次不再限定。在其他实施方式中,在对文件进行下载时,虽然显示下载完成,但是由于网络抖动或串扰等其他原因造成文件下载的可能并不完整,在本实施方式中,为了保证文件的完整性,下载模块504在完成从第三方服务器下载符合设定条件的文件之后,对下载的文件进行检测,判断文件是否完整,索引信息获取模块401在检测文件完整时,获取文件的索引信息。在下载的文件不完整时,重新下载。
具体地,下载模块504获取下载的文件的MD5值,将该MD5值与第三方服务器提供的该文件的原始MD5值进行比较,判断二者是否相同。如果该MD5值与第三方服务器提供的该文件的原始MD5值相同,则确定该文件完整,如果该MD5值与原始MD5值不相等,则确定该文件不完整。
下载模块504通过上述对下载后的文件完整性的判断,能够保证后续上传的每一个文件都是完整的,从源头上解决由于文件不完整而带来的上传不成功。且本实施方式中,是在下载下来后即可进行检测,避免对不完整的文件做进一步处理,节省处理器内存资源。
区别于现有技术,本实施方式索引信息获取模块首先获取待上传文件的索引信息,定位信息获取模块从该索引信息中获取文件的定位信息,相比于现有技术,能够更加快速的提取到文件的定位信息,加快后续在上传文件时对文件的识别速度,避免造成上传文件时服务器的拥堵,加快上传速度。文件上传模块将定位信息存储至队列存储***中,从队列存储***中获得定位信息,通过从队列存储***获取的方式,再进一步加快文件获取速度的同时,也不会造成文件上传顺序的混乱和遗漏,使文件能够快速完整的上传到分布式文件***中。
在另一实施方式中,将文件的存储路径以及编号保存到redis存储***中,由于redis存储***的毫秒级处理速度,使终端或处理器在调取文件的存储路径时更加高效。
参阅图6,图6是本申请文件的上传终端一实施方式的结构示意图。本实施方式的上传终端60包括相互耦接的处理器601和通信电路602。该通信电路602用于与外接设备建立连接。
处理器601还用于获取文件的索引信息。
其中,上述文件包括音频文件、图片文件、视频文件以及文档文件中的至少一种。该索引信息包括文件在上述数据库中的存储地址、编号、文件的获取时间、文件大小中的至少一种,以该文件为音频文件如录音文件为例来说,该索引信息包括录音的起始时间、结束时间、通话双方的身份信息如电话号码,以及该音频文件的编号,通常该编号都是唯一的ID号。
处理器601还用于从所述索引信息中获取所述文件的定位信息,并将所述定位信息存储至队列存储***中。其中,该定位信息至少包括该文件的存储路径以及编号两个字段。
该队列存储器可以为任一队列存储器,如kafaka队列。
本实施方式中,为了提高终端将文件上传到分布式文件***中的速率,将文件的定位信息保存到redis存储***中,使终端或服务器在调取文件的存储路径时更加高效。
处理器601还用于从所述队列存储***中获得所述定位信息,利用所述定位信息获得所述文件并将其上传到分布式文件***。
本实施方式采用的分布式***为Fast分布式文件***。
本实施方式中,处理器601通过单线程串行的方式从redis存储***中获取待上传的文件的存储地址,能够避免多线程同时处理造成的***或网络紊乱,且由于redis存储***本身的毫秒级的处理速度,即使是单线程执行,也不会造成过多的任务等待,能够有效满足文件的上传需求。
进一步地,为了节省终端服务器的资源,处理器601在每一个文件上传成功后,将该文件从终端或服务器中删除。
在上述任一实施方式中,处理器601为了获知文件是否上传成功,进一步地对文件的上传状态进行检测,如通过分布式文件***的反馈信息来确定文件上传的状态。
在另一个实施方式中,当需要上传的文件存储在第三方服务器时,为了上传属于本实施本地的文件,需要先从第三方服务器下载文件,区别上述实施方式的上传终端,处理器601从第三方服务器下载符合设定条件的文件。
设定条件为下载文件的范围限定信息,如身份信息或归属名称等。
当文件是持续产生时,对音频下载的频率进行限定,如设定频率为每天一次或每周一次。
在其他实施方式中,在对文件进行下载时,虽然显示下载完成,但是由于网络抖动或串扰等其他原因造成文件下载的可能并不完整,在本实施方式中,为了保证文件的完整性处理器601在完成从第三方服务器下载符合设定条件的文件之后,对下载的文件进行检测,判断文件是否完整如通过将下载的文件的MD5值与该文件的原始的MD5值相比,判断是否相同以确定是否完整。在检测文件完整时,获取文件的索引信息。在下载的文件不完整时,重新下载。
通过上述对下载后的文件完整性的判断,能够保证后续上传的每一个文件都是完整的,从源头上解决由于文件不完整而带来的上传不成功。且本实施方式中,是在下载下来后即可进行检测,避免对不完整的文件做进一步处理,节省处理器内存资源。
区别于现有技术,本实施方式处理器获取待上传文件的索引信息,从该索引信息中获取文件的定位信息,相比于现有技术,能够更加快速的提取到文件的定位信息,加快后续在上传文件时对文件的识别速度,避免造成上传文件时服务器的拥堵,加快上传速度。将定位信息存储至队列存储***中,从队列存储***中获得定位信息,通过从队列存储***获取的方式,再进一步加快文件获取速度的同时,也不会造成文件上传顺序的混乱和遗漏,使文件能够快速完整的上传到分布式文件***中。
在另一实施方式中,处理器将文件的存储路径以及编号保存到redis存储***中,由于redis存储***的毫秒级处理速度,使终端或处理器在调取文件的存储路径时更加高效。
请参与图7,本申请还提供一种存储装置的实施例的结构示意图。本实施例中,该存储装置70存储有处理器可运行的计算机指令71,该计算机指令71用于执行上述实施例中的方法。
该存储装置70具体可以为U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory,)、磁碟或者光盘等可以存储计算机指令的介质,或者也可以为存储有该计算机指令的服务器,该服务器可将存储的计算机指令发送给其他设备运行,或者也可以自运行该存储的计算机指令。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (9)
1.一种文件的上传方法,其特征在于,包括:
获取所述文件的索引信息;
从所述索引信息中获取所述文件的定位信息,并将所述定位信息存储至队列存储***中;
从所述队列存储***中获得所述定位信息,利用所述定位信息获得所述文件并将所述文件上传到分布式文件***;
其中,所述定位信息包括所述文件的存储路径以及编号;
所述利用所述定位信息获得所述文件并将其上传到分布式文件***包括:
若上传成功,则将所述索引信息在数据库中的状态由第一状态更改为第二状态,并在所述数据库中保存所述文件存入所述分布式文件***后的地址;
如因为所述存储路径无效而上传失败,则将所述索引信息在所述数据库中的状态由所述第一状态更改为第三状态;
若因为所述文件的内容为空而上传失败,则将所述索引信息在所述数据库中的状态由所述第一状态更改为第四状态;
若因为网络原因而上传失败,则将所述索引信息在所述数据库中的状态由所述第一状态更改为初始状态。
2.根据权利要求1所述的上传方法,其特征在于,
所述获取所述文件的索引信息之后包括:
将所述索引信息保存到所述数据库中;
将所述索引信息在所述数据库中的状态设置为所述初始状态;
所述从所述队列存储***中获得所述定位信息之后包括:
若获取到所述定位信息,将所述索引信息在所述数据库中的状态由所述初始状态更改为所述第一状态。
3.根据权利要求1所述的上传方法,其特征在于,所述获取所述文件的索引信息的步骤之前包括:
与第三方服务器建立连接,按照设定频率从所述第三方服务器批量下载符合设定条件的文件;
对下载的文件进行检测,判断所述文件是否完整;
如果所述文件不完整,则重新下载所述文件;如果所述文件完整,则执行所述获取所述文件的索引信息的步骤。
4.根据权利要求3所述的上传方法,其特征在于,所述对下载的文件进行检测,判断所述文件是否完整的步骤具体包括:
获取所述文件的MD5值,将所述MD5值与所述文件的原始MD5值相比较,判断所述MD5值与所述原始MD5值是否相等;
如果所述MD5值与所述原始MD5值相等,确定所述文件完整;否则,确定所述文件不完整。
5.根据权利要求1所述的上传方法,其特征在于,
所述队列存储***为redis存储***;
所述从所述队列存储***中获得所述定位信息,利用所述定位信息获得所述文件并将所述文件上传到分布式文件***的步骤具体包括:
确定待上传的文件;
采用单线程串行的方式从所述redis存储***中获得所述定位信息,利用所述定位信息获得所述文件并将所述文件上传到所述分布式文件***。
6.根据权利要求1所述的上传方法,其特征在于,所述从所述队列存储***中获得所述定位信息,利用所述定位信息获得所述文件并将所述文件上传到分布式文件***的步骤之后还包括:
删除上传后的所述文件在所述队列存储***中的定位信息。
7.一种文件的上传装置,其特征在于,所述上传装置包括:
索引信息获取模块,用于获取所述文件的索引信息;
定位信息获取模块,用于从所述索引信息中获取所述文件的定位信息,并将所述定位信息存储至队列存储***中;
文件上传模块,用于从所述队列存储***中获得所述定位信息,利用所述定位信息获得所述文件并所述文件上传到分布式文件***;
其中,所述定位信息包括所述文件的存储路径以及编号;
所述文件上传模块还用于若所述文件上传成功,将所述索引信息在数据库中的状态由第一状态更改为第二状态,并在所述数据库中保存所述文件存入所述分布式文件***后的地址;如因为所述存储路径无效而上传失败,将所述索引信息在所述数据库中的状态由所述第一状态更改为第三状态;若因为所述文件的内容为空而上传失败,将所述索引信息在所述数据库中的状态由所述第一状态更改为第四状态;若因为网络原因而上传失败,将所述索引信息在所述数据库中的状态由所述第一状态更改为初始状态。
8.一种文件的上传终端,其特征在于,所述上传终端包括:
相互耦接的处理器和通信电路,所述通信电路用于与第三方服务器建立连接,所述处理器用于实现如权利要求1-6任一项所述的文件的上传方法。
9.一种计算机存储介质,其特征在于,所述计算机存储介质上存储有程序数据,所述程序数据被处理器执行时实现如权利要求1-6任一项所述的文件的上传方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810672831.1A CN110650164B (zh) | 2018-06-26 | 2018-06-26 | 文件的上传方法、装置、终端以及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810672831.1A CN110650164B (zh) | 2018-06-26 | 2018-06-26 | 文件的上传方法、装置、终端以及计算机存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110650164A CN110650164A (zh) | 2020-01-03 |
CN110650164B true CN110650164B (zh) | 2021-03-05 |
Family
ID=69008871
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810672831.1A Active CN110650164B (zh) | 2018-06-26 | 2018-06-26 | 文件的上传方法、装置、终端以及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110650164B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113360202B (zh) * | 2020-07-22 | 2024-06-04 | 广东华晟数据固态存储有限公司 | 一种文件记录设备的无线卸载方法 |
CN112769906A (zh) * | 2020-12-25 | 2021-05-07 | 三盟科技股份有限公司 | 一种文件断点上传方法、***、计算机设备及存储介质 |
CN113726842B (zh) * | 2021-07-09 | 2022-07-05 | 贝壳找房(北京)科技有限公司 | 一种文件上传方法和装置、电子设备及存储介质 |
CN113986835B (zh) * | 2021-10-27 | 2024-05-17 | 平安国际智慧城市科技股份有限公司 | FastDFS分布式文件的管理方法、装置、设备及存储介质 |
CN114301627A (zh) * | 2021-11-29 | 2022-04-08 | 北京天融信网络安全技术有限公司 | 上传文件安全扫描方法、设备及计算机可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101145933A (zh) * | 2007-10-26 | 2008-03-19 | 北大方正集团有限公司 | 发布***、媒体数据的发送方法、接收方法及相应装置 |
CN101567893A (zh) * | 2009-05-26 | 2009-10-28 | 中兴通讯股份有限公司 | 一种实现在web应用中文件上传的方法及*** |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104090913B (zh) * | 2014-06-10 | 2017-11-03 | 深信服科技股份有限公司 | 基于瘦客户机的文件操作方法及装置 |
CN106161523B (zh) * | 2015-04-02 | 2019-11-22 | 腾讯科技(深圳)有限公司 | 一种数据处理方法和设备 |
CN107508897A (zh) * | 2017-08-31 | 2017-12-22 | 深圳市丰巢科技有限公司 | 一种基于分布式文件存储***的文件上传方法及*** |
-
2018
- 2018-06-26 CN CN201810672831.1A patent/CN110650164B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101145933A (zh) * | 2007-10-26 | 2008-03-19 | 北大方正集团有限公司 | 发布***、媒体数据的发送方法、接收方法及相应装置 |
CN101567893A (zh) * | 2009-05-26 | 2009-10-28 | 中兴通讯股份有限公司 | 一种实现在web应用中文件上传的方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN110650164A (zh) | 2020-01-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110650164B (zh) | 文件的上传方法、装置、终端以及计算机存储介质 | |
US10838838B2 (en) | Method and apparatus for dealing with abnormality of application program and storage medium | |
US20150347552A1 (en) | Synchronization system for multiple client devices | |
CN107315825B (zh) | 一种索引更新***、方法及装置 | |
CN106940699B (zh) | 一种内存数据的同步处理方法、装置、服务器及*** | |
CN110225078B (zh) | 一种应用服务更新方法、***及终端设备 | |
CN111367925A (zh) | 数据动态实时更新方法、装置及存储介质 | |
CN110019873B (zh) | 人脸数据处理方法、装置及设备 | |
US10938773B2 (en) | Method and apparatus for synchronizing contact information and medium | |
US10318385B2 (en) | Service recovery using snapshots and interservice messages | |
CN115329170A (zh) | 网页抓取方法、装置、设备以及存储介质 | |
US8510426B2 (en) | Communication and coordination between web services in a cloud-based computing environment | |
CN111274325B (zh) | 平台自动化测试方法及*** | |
CN110620798A (zh) | Ftp连接的控制方法、***、设备和存储介质 | |
CN111831954A (zh) | 内容数据更新方法、装置、计算机设备及存储介质 | |
CN112711466B (zh) | 悬挂事务巡检方法和装置、电子设备和存储介质 | |
CN112732728A (zh) | 一种数据同步方法和*** | |
CN112153148A (zh) | 基于消息接收端的消息堆积处理方法及装置 | |
US11953995B1 (en) | Centralized data backup platform supporting multiple data environments | |
CN115114361B (zh) | 一种基于容器云平台统一接口的资源检索方法和*** | |
CN115037595B (zh) | 网络恢复方法、装置、设备及存储介质 | |
CN111221899B (zh) | 一种跨机房数据同步方法和装置 | |
CN114185625A (zh) | 接口自动化延迟执行结果的确认方法、装置、设备及介质 | |
CN113204360A (zh) | ***的升级方法和装置 | |
CN115982285A (zh) | 数据处理方法、设备及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |