一种文件传输方法及装置的制造方法_2

文档序号:9711601阅读:来源:国知局
符,一般表示前后关联对象是一种“或”的关系。
[0043]应当理解,尽管在本发明实施例中可能采用术语第一、第二等来描述文件上传请求,但这些文件上传请求不应限于这些术语。这些术语仅用来将文件上传请求彼此区分开。例如,在不脱离本发明实施例范围的情况下,第一文件上传请求也可以被称为第二文件上传请求,类似地,第二文件上传请求也可以被称为第一文件上传请求。
[0044]取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
[0045]实施例一
[0046]本发明实施例给出一种文件传输方法,请参考图1,其为本发明实施例所提供的文件传输方法的实施例一的流程示意图,如图所示,该方法包括以下步骤:
[0047]S101,在浏览器运行过程中,调用所述浏览器提供的文件操作接口,以访问文件。
[0048]具体的,浏览器中的JavaScript引擎中预先写入浏览器提供的文件操作接口,这样,在浏览器运行过程中,JavaScript引擎根据用户在浏览器上选择的文件,可以调用文件操作接口,对该文件进行访问。
[0049]在一个具体的实现过程中,所述文件操作接口可以是基于HTML5的文件操作的应用程序编程接口(Applicat1n Programming Interface,API),如HTML File API。
[0050]S102,从所述文件中获取文件片段。
[0051]具体的,所述JavaScript引擎可以利用切片(Slice)方法对文件进行切片,然后可以获得Slice方法返回的文件片段。
[0052]例如,Slice方法可以为Slice (start,end),其中,参数start表示需要获得的文件片段的开始字节数,参数end表示需要获得的文件片段的结束字节数,如start等于0,end等于1000,表示需要从文件中获取第0字节至第1000字节的文件片段,该文件片段的长度为1000字节。
[0053]S103,向服务器发送第一文件上传请求,所述第一文件上传请求携带所述文件片段、片段编号和所述文件的标识,以便于所述服务器根据所述文件片段、片段编号和所述文件的标识,对所述文件片段进行存储。
[0054]具体的,上述JavaScript引擎可以向服务器发送第一文件上传请求,该第一文件上传请求可以携带获得的文件片段、片段编号以及文件的标识。其中,片段编号可以作为文件片段的标识,也可以表示该文件片段在整个文件中的位置和顺序。
[0055]在一个具体的实现过程中,可以根据该文件片段的开始字节数以及文件片段的指定长度确定该文件片段的片段编号。例如,文件片段的开始字节数为3000,文件片段的指定长度是1000,则可以确定该文件片段的片段编号是4,即该文件片段是文件中的第四个文件片段。
[0056]需要说明的是,在HTML5标准中提供了操作文件的API,有了操作文件的API,浏览器中运行的Web应用可以很轻松的通过JavaScript引擎来进行文件的读取、写入、文件夹、文件等操作。因此本发明实施例在没有使用插件的情况下仍然能够实现对文件的分片处理和传输,避免了使用插件或者代码实现对文件进行分片的处理方式所导致的技术问题,降低了文件的分片处理成本,提高了文件的分片处理的效率。
[0057]实施例二
[0058]基于上述实施例一所提供的文件传输方法,本实施例提供了文件传输方法的一种具体实现方式。请参考图2,其为本发明实施例所提供的文件传输方法的实施例二的流程示意图,如图所示,该文件传输方法可以包括以下步骤:
[0059]S201,向所述服务器发送第二文件上传请求,所述第二文件上传请求携带所述文件的标识,以便于所述服务器根据所述文件的标识,检测所述文件是否存在已经上传过的文件片段,若不存在已经上传过的文件片段,返回用于指示所述文件未上传的状态码。
[0060]具体的,上述JavaScript引擎在向服务器发送文件片段之前,先向服务器发送第二文件上传请求,该第二文件上传请求携带所述文件的标识。这样,服务器可以根据文件的标识,查询数据库中维护的文件表,若该文件表中不包含第二文件上传请求携带的文件的标识,则说明接收到第二文件上传请求的服务器所在集群中对于该文件,还没有存在已经上传过的文件片段,服务器所在集群中所有服务器上都没有存储该文件的一个或多个文件片段。然后,服务器向上述JavaScript引擎返回状态码,该状态码用于指示所述文件未上传。
[0061 ]在一个具体的实现过程中,所述数据库中可以维护一个文件表,该文件表中每一条记录包含文件的标识、文件拥有者、文件名、文件大小和文件最后修改时间、用户名和用户标识等文件的详细信息。每当集群中有服务器收到并存储一个文件片段,该服务器需要将文件片段所属文件的详细信息发送给数据库进行存储。
[0062]S202,在浏览器运行过程中,调用所述浏览器提供的文件操作接口,以访问文件。
[0063]S203,从所述文件的第0字节开始,根据指定长度,对所述文件进行切片,以获得所述文件片段。
[0064]具体的,上述JavaScript引擎由于从服务器收到状态码,从而确定文件还没有上传到服务器,因此JavaScript引擎调用浏览器提供的文件操作接口来访问文件,然后利用Slice方法从文件中获取文件片段。
[0065]在一个具体的实现过程中,由于需要上传的文件还没有文件片段上传到服务器,因此可以从文件的第0字节开始进行切片,如JavaScript引擎可以根据参数start等于0,以及指定长度计算出参数end的数值,然后根据参数start的数值0以及参数end的数值调用Slice方法,以使得Slice方法从文件的第0字节开始进行切片,获得文件片段。如此,JavaScript引擎可以利用Slice方法从文件中依次获得若干文件片段。本发明实施例中,文件片段的指定长度可以固定,或者也可以不固定,本发明实施例对此不进行特别限定。
[0066]S204,向服务器发送第一文件上传请求,所述第一文件上传请求携带所述文件片段、片段编号和所述文件的标识,以便于所述服务器根据所述文件片段、片段编号和所述文件的标识,对所述文件片段进行存储。
[0067]具体的,上述JavaScript引擎可以将获得的若干文件片段通过第一文件上传请求发送到服务器。其中,JavaScript引擎可以为每个文件片段都生成一个第一文件上传请求,每个第一文件上传请求携带一个文件片段、该文件片段的片段编号以及文件的标识。
[0068]其中,JavaScript引擎可以按照片段编号,将各第一文件上传请求按照顺序发送给服务器,或者,也可以不按照顺序将各第一文件上传请求发送到服务器。或者,JavaScript引擎也可以同时将各第一文件上传请求发送给服务器,或者,也可以异步地将各第一文件上传请求发送给服务器。
[0069]实施例三
[0070]基于上述实施例一所提供的文件传输方法,本实施例提供了文件传输方法的另一种具体实现方式。请参考图3,其为本发明实施例所提供的文件传输方法的实施例三的流程示意图,如图所示,该文件传输方法可以包括以下步骤:
[0071]S301,向所述服务器发送第三文件上传请求,所述第三文件上传请求携带所述文件的标识,以便于所述服务器根据所述文件的标识,检测所述文件是否存在已经上传过的文件片段,若存在已经上传过的文件片段,返回已经上传过的文件片段的标识。
[0072]具体的,上述JavaScript引擎在向服务器发送文件片段之前,先向服务器发送第三文件上传请求,该第三文件上传请求携带所述文件的标识。这样,服务器可以根据文件的标识,查询数据库中维护的文件表,若该文件表中包含第三文件上传请求携带的文件的标识,则说明接收到第三文件上传请求的服务器所在集群中对于该文件,存在已经上传过的文件片段,则该服务器根据文件的标识进一步查询数据库中维护的分片记录表,以获取已经上传过的文件片段的标识,服务器向上述JavaScript引擎返回已经上传过的文件片段的标识Ο
[0073]在一个具体的实现过程中,所述数据库中还可以维护一个分片记录表,该分片记录表中每一条记录包含文件的标识、文件片段的标识以及文件片段的存储位置信息。其中,文件片段的存储位置信息可以为保存该文件片段的服务器的IP地址,或者,也可
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1