CN113497821A - 一种上传文件的方法、装置和系统 - Google Patents
一种上传文件的方法、装置和系统 Download PDFInfo
- Publication number
- CN113497821A CN113497821A CN202010266673.7A CN202010266673A CN113497821A CN 113497821 A CN113497821 A CN 113497821A CN 202010266673 A CN202010266673 A CN 202010266673A CN 113497821 A CN113497821 A CN 113497821A
- Authority
- CN
- China
- Prior art keywords
- file
- uploaded
- protocol
- server
- client
- 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.)
- Pending
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
- 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/104—Peer-to-peer [P2P] networks
- H04L67/1074—Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
- H04L67/1078—Resource delivery mechanisms
- H04L67/108—Resource delivery mechanisms characterised by resources being split in blocks or fragments
-
- 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/14—Session management
- H04L67/141—Setup of application sessions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Abstract
本发明公开了一种上传文件的方法、装置和系统,涉及计算机技术领域。该方法的一具体实施方式包括:与服务端建立长连接;基于web socket的文件传输协议对待上传文件进行拼装;通过长连接将拼装得到的文件对象发送给服务端,以使服务端对文件对象进行协议解析得到待上传文件,并保存待上传文件。该实施方式能够基于自定义的web socket文件传输协议进行文件上传,实现简单,支持跨域文件上传且可以实时显示上传进度,提高用户体验,且可以在多场景多终端使用。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种上传文件的方法和装置。
背景技术
目前,通过浏览器进行文件上传大多是通过以下2种方式:
1、使用HTML(HyperText Markup Language,超级文本标记语言)的input标签下的文件上传控件FileUpload对象,通过在HTML文档中使用file类型标签来进行文件上传;
2、使用文件上传控件flash插件上传文件,这是目前使用最多的文件上传方式。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
1、使用input标签的file类型标签来上传文件,虽然开发使用简单,但是不能实时显示上传进度,且不可跨域上传,对使用场景有限制;
2、使用Flash插件来上传文件,虽然开发使用简单且可以实时显示上传进度,但是在不支持flash插件的场景下,则无法使用其来上传文件。
发明内容
有鉴于此,本发明实施例提供一种上传文件的方法和装置,能够基于自定义的websocket文件传输协议进行文件上传,实现简单,支持跨域文件上传且可以实时显示上传进度,提高用户体验,且可以在多场景多终端使用。
为实现上述目的,根据本发明实施例的一个方面,提供了一种上传文件的方法。
一种上传文件的方法,包括:与服务端建立长连接;基于websocket的文件传输协议对待上传文件进行拼装;通过所述长连接将拼装得到的文件对象发送给所述服务端,以使所述服务端对所述文件对象进行协议解析得到所述待上传文件,并保存所述待上传文件。
可选地,基于websocket的文件传输协议对待上传文件进行拼装包括:生成文件传输协议的协议头;获取待上传文件的扩展名,并将所述扩展名转换为一个字节的数据作为文件类型;将所述待上传文件的数据流转换为数据缓冲区对象以作为文件传输协议的协议数据体;根据所述协议头、所述文件类型和所述协议数据体创建文件存储对象以对所述待上传文件进行拼装。
可选地,所述协议头包括四个字节魔数。
可选地,所述服务端对所述文件对象进行协议解析包括:所述服务端根据所述文件对象的前四个字节解析得到协议头;所述服务端根据所述文件对象的第五个字节解析得到文件类型;所述服务端根据所述文件对象的第五个字节之后的数据部分解析得到待上传文件的数据流。
根据本发明实施例的另一方面,提供了一种上传文件的方法。
一种上传文件的方法,包括:与客户端建立长连接;接收所述客户端通过所述长连接上传的文件对象,所述文件对象由所述客户端基于websocket的文件传输协议对待上传文件进行拼装得到;对所述文件对象进行协议解析得到所述待上传文件,并保存所述待上传文件。
可选地,所述客户端基于websocket的文件传输协议对待上传文件进行拼装包括:所述客户端生成文件传输协议的协议头;所述客户端获取待上传文件的扩展名,并将所述扩展名转换为一个字节的数据作为文件类型;所述客户端将所述待上传文件的数据流转换为数据缓冲区对象以作为文件传输协议的协议数据体;所述客户端根据所述协议头、所述文件类型和所述协议数据体创建文件存储对象以对所述待上传文件进行拼装。
可选地,对所述文件对象进行协议解析包括:根据所述文件对象的前四个字节解析得到协议头;根据所述文件对象的第五个字节解析得到文件类型;根据所述文件对象的第五个字节之后的数据部分解析得到待上传文件的数据流。
可选地,保存所述待上传文件之前,还包括:将所述待上传文件的数据流转换为图像缓冲区对象。
根据本发明实施例的又一方面,提供了一种上传文件的方法。
一种上传文件的方法,包括:客户端与服务端建立长连接;所述客户端基于websocket的文件传输协议对待上传文件进行拼装,并通过所述长连接将拼装得到的文件对象发送给所述服务端;所述服务端接收所述客户端发来的文件对象,对所述文件对象进行协议解析得到所述待上传文件,并保存所述待上传文件。
根据本发明实施例的又一方面,提供了一种上传文件的装置。
一种上传文件的装置,包括:第一连接模块,用于与服务端建立长连接;文件拼装模块,用于基于websocket的文件传输协议对待上传文件进行拼装;文件发送模块,用于通过所述长连接将拼装得到的文件对象发送给所述服务端,以使所述服务端对所述文件对象进行协议解析得到所述待上传文件,并保存所述待上传文件。
根据本发明实施例的又一方面,提供了一种上传文件的装置。
一种上传文件的装置,包括:第二连接模块,用于与客户端建立长连接;文件接收模块,用于接收所述客户端通过所述长连接上传的文件对象,所述文件对象由所述客户端基于websocket的文件传输协议对待上传文件进行拼装得到;文件解析模块,用于对所述文件对象进行协议解析得到所述待上传文件,并保存所述待上传文件。
根据本发明实施例的又一方面,提供了一种上传文件的系统。
一种上传文件的系统,包括连接建立模块,客户端和服务端,其中:所述连接建立模块,用于使客户端与服务端建立长连接;所述客户端,用于基于websocket的文件传输协议对待上传文件进行拼装,并通过所述长连接将拼装得到的文件对象发送给所述服务端;所述服务端,用于接收所述客户端发来的文件对象,对所述文件对象进行协议解析得到所述待上传文件,并保存所述待上传文件。
根据本发明实施例的又一方面,提供了一种上传文件的电子设备。
一种上传文件的电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例所提供的上传文件的方法。
根据本发明实施例的再一方面,提供了一种计算机可读介质。
一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例所提供的上传文件的方法。
上述发明中的一个实施例具有如下优点或有益效果:通过与服务端建立长连接;基于websocket的文件传输协议对待上传文件进行拼装;通过长连接将拼装得到的文件对象发送给服务端,以使服务端对文件对象进行协议解析得到待上传文件,并保存待上传文件,实现了基于自定义的websocket文件传输协议进行文件上传,实现简单,支持跨域文件上传且可以实时显示上传进度,提高用户体验。另外,本发明的技术方案对应用场景无限制,且对客户端的形式也不作限定,由于无论是PC(Personal Computer)端还是移动终端都已经兼容html5标准,因此,本发明的文件上传方法完全实现了可以在多场景多终端使用。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明第一实施例的上传文件的方法的主要步骤示意图;
图2是根据本发明第二实施例的上传文件的方法的主要步骤示意图;
图3是根据本发明第三实施例的上传文件的方法的主要步骤示意图;
图4是本发明一个实施例的文件上传系统的实现原理示意图;
图5是本发明一个实施例的文件传输协议的组成架构图;
图6是本发明一个实施例的服务端文件上传的处理流程示意图;
图7是根据本发明第一实施例的上传文件的装置的主要模块示意图;
图8是根据本发明第二实施例的上传文件的装置的主要模块示意图;
图9是根据本发明第三实施例的上传文件的系统的主要构成部分示意图;
图10是本发明实施例可以应用于其中的示例性系统架构图;
图11是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
为了解决现有技术中存在的问题,本发明提供了一种上传文件的方法,基于自定义的websocket文件传输协议进行文件上传,支持跨域文件上传且可以实时展示上传进度,提高用户体验。其中,websocket是一种在单个TCP连接上进行全双工通信的协议,可实现浏览器与服务器的全双工通信。在websocket API接口中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
图1是根据本发明第一实施例的上传文件的方法的主要步骤示意图。如图1所示,其示出了在进行文件上传时客户端所执行的主要步骤。根据本发明的第一实施例,上传文件的方法主要包括如下的步骤S101至步骤S103。
步骤S101:与服务端建立长连接;
步骤S102:基于websocket的文件传输协议对待上传文件进行拼装;
步骤S103:通过所述长连接将拼装得到的文件对象发送给服务端,以使服务端对文件对象进行协议解析得到待上传文件,并保存待上传文件。
在具体实现时,步骤S101和步骤S102这两个步骤可以同时执行,也可以先执行步骤S101再执行步骤S102,还可以先执行步骤S102再执行步骤S101,具体的执行顺序并不影响本发明的实现效果。
根据本发明的实施例,步骤S102在基于websocket的文件传输协议对待上传文件进行拼装时,具体可以包括:
生成文件传输协议的协议头;
获取待上传文件的扩展名,并将扩展名转换为一个字节的数据作为文件类型;
将待上传文件的数据流转换为数据缓冲区对象以作为文件传输协议的协议数据体;
根据协议头、文件类型和协议数据体创建文件存储对象以对待上传文件进行拼装。
具体地,在实现时,可以先创建一个ArrayBuffer字节数组缓冲区来作为数据缓冲区,并在数据缓冲区内进行待上传文件的拼装。每个文件类型都具有对应的文件扩展名,常见的文件类型例如:文本文件类型、视频文件格式类型、音频文件格式类型、图片文件格式类型、可执行文件格式类型,等等。以视频文件格式类型为例,其常用的文件扩展名例如“mp4”、“wmv”、“rmvb”、“avi”,等等;以图片文件格式类型为例,其常用的文件扩展名例如“jpeg”、“jpng”、“tiff”、“jpg”、“bmp”、“gif”,等等。在将待上传文件的扩展名转换为一个字节的数据作为文件类型时,可以预先设置不同文件扩展名所对应的一个字节的数据,例如:假设若图片文件扩展名为jpg,则其对应的一个字节数据为1;若图片文件扩展名为jpng,则其对应的一个字节数据为2,若视频文件扩展名为MP4,则其对应的一个字节数据为6,等等。通过设定文件的扩展名和该一个字节数据之间的对应关系,把文件的扩展名仅用一个字节来表示,可以减少传输过程中的数据量,且便于进行协议解析。
另外,在将待上传文件的数据流转换为数据缓冲区对象时,具体可以通过javascrit自带的FileReader对象来将上传文件的数据流转为数据缓冲区对象(arraybuffer对象)。
最后,在根据协议头、文件类型和协议数据体创建文件存储对象以对待上传文件进行拼装时,具体是将协议头、文件类型、协议数据体对应的字节数组依次放置在数据缓冲区的指定位置,从而进行拼装的。
在本发明的该实施例中,协议头包括四个字节魔数。很多类型的文件,其起始的几个字节的内容是固定的(或是有意填充,或是本就如此)。根据这几个字节的内容就可以确定文件类型,因此这几个字节的内容被称为魔数(magic number)。在本发明的文件上传协议中,以四个字节的魔数作为协议头,便于在解析协议时进行协议验证。
根据本发明的技术方案,服务端在接收到文件对象后,将对文件对象进行协议解析,该协议解析的过程例如具体包括:
服务端根据文件对象的前四个字节解析得到协议头;
服务端根据文件对象的第五个字节解析得到文件类型;
服务端根据文件对象的第五个字节之后的数据部分解析得到待上传文件的数据流。
其中,在对文件对象的第五个字节之后的数据部分解析时,可由java提供的函数ImageIO来将文件对象中文件传输协议的协议数据体部分转换为待上传文件的二进制数据流。
通过解析得到的协议头即可对文件对象进行校验,以判断是否可以对该文件对象进行解析。在得到文件类型和待上传文件的数据流之后,即可得到待上传文件。
另外,服务端在得到待上传文件的数据流之后,可以将待上传文件的数据流转换为图像缓冲区对象,从而便于保存。图像缓冲区,即一个缓冲区用来存储图片的二进制流,缓冲区是操作系统自带的,写入缓冲区速度快,而写入磁盘的速度很慢,故而先写入缓冲区,再由操作系统去保存到磁盘中,这样可以减少程序处理时间。
图2是根据本发明第二实施例的上传文件的方法的主要步骤示意图。如图2所示,其示出了在进行文件上传时服务端所执行的主要步骤。根据本发明的第二实施例,上传文件的方法主要包括如下的步骤S201至步骤S203。
步骤S201:与客户端建立长连接;
步骤S202:接收客户端通过长连接上传的文件对象,文件对象是由客户端基于websocket的文件传输协议对待上传文件进行拼装得到;
步骤S203:对文件对象进行协议解析得到待上传文件,并保存待上传文件。
根据本发明的实施例,客户端上传的文件对象是基于websocket的文件传输协议对待上传文件进行拼装得到的,客户端在对上传文件进行拼装的过程例如可以包括:
客户端生成文件传输协议的协议头;
客户端获取待上传文件的扩展名,并将扩展名转换为一个字节的数据作为文件类型;
客户端将待上传文件的数据流转换为数据缓冲区对象以作为文件传输协议的协议数据体;
客户端根据协议头、文件类型和协议数据体创建文件存储对象以对待上传文件进行拼装。
在本发明的实施例中,对文件对象进行协议解析例如可以包括:
根据文件对象的前四个字节解析得到协议头;
根据文件对象的第五个字节解析得到文件类型;
根据文件对象的第五个字节之后的数据部分解析得到待上传文件的数据流。
根据本发明的技术方案,在保存待上传文件之前,还可以将待上传文件的数据流转换为图像缓冲区对象。
图3是根据本发明第三实施例的上传文件的方法的主要步骤示意图。如图3所示,其示出了根据本发明的上传文件的技术方案,客户端与服务端进行文件上传的具体过程,主要包括如下的步骤S301至步骤S303。
步骤S301:客户端与服务端建立长连接;
步骤S302:客户端基于websocket的文件传输协议对待上传文件进行拼装,并通过长连接将拼装得到的文件对象发送给服务端;
步骤S303:服务端接收客户端发来的文件对象,对文件对象进行协议解析得到待上传文件,并保存待上传文件。
下面结合具体实施例介绍本发明的文件上传的技术方案。
图4是本发明一个实施例的文件上传系统的实现原理示意图。在本发明的实施例中,文件上传系统进行数据处理和传输都是基于websocket协议,文件传输协议基于自定义的WSF协议(基于websocket的二进制文件传输协议)。如图4所示,本发明的实施例中,文件上传系统的实现原理主要包括以下的步骤1至步骤3。
步骤1:客户端和服务端建立长连接,客户端得到长连接句柄,以便通过长连接句柄与服务端进行通信。
步骤2:客户端的websocket API接口基于文件传输协议WSF协议对待上传的文件进行拼装,得到文件对象,然后将文件对象发送给服务端。
图5是本发明一个实施例的文件传输协议的组成架构图,基于图5所示的文件传输协议进行文件拼装和文件对象的发送的过程如下:
1、首先创建一个ArrayBuffer字节数组缓冲区作为数据缓冲区;
2、生成WSF协议的第一部分——协议头:协议报文头包括4个字节的魔数作为WSF协议头,例如图5中所示的0x654321,并将协议头放置在ArrayBuffer字节数组缓冲区的前4个字节;
3、生成WSF协议的第二部分——文件类型:通过文件名获取文件的扩展名,然后将扩展名转换为1个字节的数据,并将该1个字节的数据放置在ArrayBuffer字节数组缓冲区的第5个字节,即:在字节数组偏移为4的位置写入该1个字节的数据;
4、生成WSF协议的第三部分——协议数据体:WSF协议数据体存储内容即为待上传文件的数据流,通过对待上传文件的数据流转换为arrayBuffer对象即可生成协议数据体,然后将该协议数据体放置在ArrayBuffer字节数组缓冲区的第6个及之后字节;
5、以WSF协议的第一、二、三部分的字节数组为构造入参创建一个Blob对象,Blob对象表示一个不可变、原始数据的类文件对象;
6、通过websocket协议以二进制形式将Blob对象发送给服务端。
步骤3:服务端接收到客户端发来的文件对象的二进制数据帧之后,进行WSF协议解析以获取待上传文件并保存。
图6是本发明一个实施例的服务端文件上传的处理流程示意图。如图6所示,服务端的处理流程主要包括以下步骤:
1、接收到websocket消息后,取出websocket数据体,即文件对象的二进制数据帧;
2、获取文件对象的前4个字节,即一个int协议头,并进行协议校验,校验通过后执行后续步骤;
3、获取文件对象的第5个字节,即文件类型字节数组并转换为具体的文件扩展名;
4、获取文件对象的第6个及之后的字节,即获取WSF协议中协议数据体部分,然后将协议数据体部分的文件字节数组转换为二进制数据流,再转换为图像缓冲区对象,最后刷盘保存操作,BufferedImage通过IO将图像缓冲区对象写入磁盘进行保存。
下面结合一个具体实施例介绍本发明的文件上传的实施过程。假设需要将某文本文件上传到服务端,其中,该文本文件对应的文件扩展名为“txt”,预设的一个字节数据为8,文本文件的内容为“abcdef”。假设协议头为“0x654321”,则客户端的websocket API接口基于文件传输协议WSF协议对待上传的文件进行拼装:第一部分前4个字节为“0x654321”,第二部分第5个字节为“08”,第三部分第6个及之后字节为“abcdef”,将这三部分进行拼装得到文件对象。然后,将该拼装得到的文件对象发送给服务端。
服务端在接收到客户端发来的文件对象之后,将对该文件对象进行解析,首先获取该文件对象的前4个字节“0x654321”,并进行协议校验;校验通过,然后获取文件对象的第5个字节“08”,进而根据预先保存的文件扩展名与该一个字节的数据的对应关系可得到上传文件的文件扩展名为“txt”;之后,获取文件对象的第6个及之后的字节“abcdef”,即可得到文件内容;最后,通过刷盘保存操作,将上传的文件写入磁盘进行保存。
图7是根据本发明第一实施例的上传文件的装置的主要模块示意图。如图7所示,其示出了在进行文件上传时客户端的文件上传装置700所包括的主要模块。根据本发明的第一实施例,客户端的文件上传装置700主要包括第一连接模块701、文件拼装模块702和文件发送模块703。
第一连接模块701,用于与服务端建立长连接;
文件拼装模块702,用于基于websocket的文件传输协议对待上传文件进行拼装;
文件发送模块703,用于通过所述长连接将拼装得到的文件对象发送给所述服务端,以使所述服务端对所述文件对象进行协议解析得到所述待上传文件,并保存所述待上传文件。
根据本发明的实施例,文件拼装模块702还可以用于:
生成文件传输协议的协议头;
获取待上传文件的扩展名,并将所述扩展名转换为一个字节的数据作为文件类型;
将所述待上传文件的数据流转换为数据缓冲区对象以作为文件传输协议的协议数据体;
根据所述协议头、所述文件类型和所述协议数据体创建文件存储对象以对所述待上传文件进行拼装。
在本发明的实施例中,协议头包括四个字节魔数。
在本发明的实施例中,服务端对所述文件对象进行协议解析的过程具体可以包括:
服务端根据所述文件对象的前四个字节解析得到协议头;
服务端根据所述文件对象的第五个字节解析得到文件类型;
服务端根据所述文件对象的第五个字节之后的数据部分解析得到待上传文件的数据流。
图8是根据本发明第二实施例的上传文件的装置的主要模块示意图。如图8所示,其示出了在进行文件上传时服务端的文件上传装置800所包括的主要模块。根据本发明的第一实施例,服务端的文件上传装置800主要包括第二连接模块801、文件接收模块802和文件解析模块803。
第二连接模块801,用于与客户端建立长连接;
文件接收模块802,用于接收所述客户端通过所述长连接上传的文件对象,所述文件对象由所述客户端基于websocket的文件传输协议对待上传文件进行拼装得到;
文件解析模块803,用于对所述文件对象进行协议解析得到所述待上传文件,并保存所述待上传文件。
根据本发明的实施例,文件对象是由所述客户端基于websocket的文件传输协议对待上传文件进行拼装得到的,拼装过程具体包括:
所述客户端生成文件传输协议的协议头;
所述客户端获取待上传文件的扩展名,并将所述扩展名转换为一个字节的数据作为文件类型;
所述客户端将所述待上传文件的数据流转换为数据缓冲区对象以作为文件传输协议的协议数据体;
所述客户端根据所述协议头、所述文件类型和所述协议数据体创建文件存储对象以对所述待上传文件进行拼装。
在本发明的实施例中,文件解析模块803还可以用于:
根据所述文件对象的前四个字节解析得到协议头;
根据所述文件对象的第五个字节解析得到文件类型;
根据所述文件对象的第五个字节之后的数据部分解析得到待上传文件的数据流。
在本发明的实施例中,服务端的文件上传装置800还可以包括数据转换模块(图中未示出),用于:
在保存所述待上传文件之前,将所述待上传文件的数据流转换为图像缓冲区对象。
图9是根据本发明第三实施例的上传文件的系统的主要构成部分示意图。如图9所示,根据本发明的第三实施例,该上传文件的系统900主要包括连接建立模块901,客户端902和服务端903。其中,
连接建立模块901,用于使客户端与服务端建立长连接;
客户端902,用于基于websocket的文件传输协议对待上传文件进行拼装,并通过所述长连接将拼装得到的文件对象发送给服务端903;
服务端903,用于接收客户端902发来的文件对象,对所述文件对象进行协议解析得到所述待上传文件,并保存所述待上传文件。
根据本发明实施例的技术方案,通过与服务端建立长连接;基于websocket的文件传输协议对待上传文件进行拼装;通过长连接将拼装得到的文件对象发送给服务端,以使服务端对文件对象进行协议解析得到待上传文件,并保存待上传文件,实现了基于自定义的websocket文件传输协议进行文件上传,实现简单,支持跨域文件上传且可以实时显示上传进度,提高用户体验。另外,本发明的技术方案对应用场景无限制,且对客户端的形式也不作限定,由于无论是PC(Personal Computer)端还是移动终端都已经兼容html5标准,因此,本发明的文件上传方法完全实现了可以在多场景多终端使用。
图10示出了可以应用本发明实施例的上传文件的方法或上传文件的装置或上传文件的系统的示例性系统架构1000。
如图10所示,系统架构1000可以包括终端设备1001、1002、1003,网络1004和服务器1005。网络1004用以在终端设备1001、1002、1003和服务器1005之间提供通信链路的介质。网络1004可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备1001、1002、1003通过网络1004与服务器1005交互,以接收或发送消息等。终端设备1001、1002、1003上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备1001、1002、1003可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器1005可以是提供各种服务的服务器,例如对用户利用终端设备1001、1002、1003所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息--仅为示例)反馈给终端设备。
需要说明的是,本发明实施例所提供的上传文件的方法一般由服务器1005执行,相应地,上传文件的装置一般设置于服务器1005中。
应该理解,图10中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图11,其示出了适于用来实现本发明实施例的终端设备或服务器的计算机系统1100的结构示意图。图11示出的终端设备或服务器仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图11所示,计算机系统1100包括中央处理单元(CPU)1101,其可以根据存储在只读存储器(ROM)1102中的程序或者从存储部分1108加载到随机访问存储器(RAM)1103中的程序而执行各种适当的动作和处理。在RAM 1103中,还存储有系统1100操作所需的各种程序和数据。CPU 1101、ROM 1102以及RAM 1103通过总线1104彼此相连。输入/输出(I/O)接口1105也连接至总线1104。
以下部件连接至I/O接口1105:包括键盘、鼠标等的输入部分1106;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1107;包括硬盘等的存储部分1108;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1109。通信部分1109经由诸如因特网的网络执行通信处理。驱动器1110也根据需要连接至I/O接口1105。可拆卸介质1111,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1110上,以便于从其上读出的计算机程序根据需要被安装入存储部分1108。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1109从网络上被下载和安装,和/或从可拆卸介质1111被安装。在该计算机程序被中央处理单元(CPU)1101执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,可以描述为:一种处理器包括第一连接模块、文件拼装模块和文件发送模块。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定,例如,第一连接模块还可以被描述为“用于与服务端建立长连接的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:与服务端建立长连接;基于websocket的文件传输协议对待上传文件进行拼装;通过所述长连接将拼装得到的文件对象发送给所述服务端,以使所述服务端对所述文件对象进行协议解析得到所述待上传文件,并保存所述待上传文件。
根据本发明实施例的技术方案,通过与服务端建立长连接;基于websocket的文件传输协议对待上传文件进行拼装;通过长连接将拼装得到的文件对象发送给服务端,以使服务端对文件对象进行协议解析得到待上传文件,并保存待上传文件,实现了基于自定义的websocket文件传输协议进行文件上传,实现简单,支持跨域文件上传且可以实时显示上传进度,提高用户体验。另外,本发明的技术方案对应用场景无限制,且对客户端的形式也不作限定,由于无论是PC(Personal Computer)端还是移动终端都已经兼容html5标准,因此,本发明的文件上传方法完全实现了可以在多场景多终端使用。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (14)
1.一种上传文件的方法,其特征在于,包括:
与服务端建立长连接;
基于websocket的文件传输协议对待上传文件进行拼装;
通过所述长连接将拼装得到的文件对象发送给所述服务端,以使所述服务端对所述文件对象进行协议解析得到所述待上传文件,并保存所述待上传文件。
2.根据权利要求1所述的方法,其特征在于,基于websocket的文件传输协议对待上传文件进行拼装包括:
生成文件传输协议的协议头;
获取待上传文件的扩展名,并将所述扩展名转换为一个字节的数据作为文件类型;
将所述待上传文件的数据流转换为数据缓冲区对象以作为文件传输协议的协议数据体;
根据所述协议头、所述文件类型和所述协议数据体创建文件存储对象以对所述待上传文件进行拼装。
3.根据权利要求2所述的方法,其特征在于,所述协议头包括四个字节魔数。
4.根据权利要求2所述的方法,其特征在于,所述服务端对所述文件对象进行协议解析包括:
所述服务端根据所述文件对象的前四个字节解析得到协议头;
所述服务端根据所述文件对象的第五个字节解析得到文件类型;
所述服务端根据所述文件对象的第五个字节之后的数据部分解析得到待上传文件的数据流。
5.一种上传文件的方法,其特征在于,包括:
与客户端建立长连接;
接收所述客户端通过所述长连接上传的文件对象,所述文件对象由所述客户端基于websocket的文件传输协议对待上传文件进行拼装得到;
对所述文件对象进行协议解析得到所述待上传文件,并保存所述待上传文件。
6.根据权利要求5所述的方法,其特征在于,所述客户端基于websocket的文件传输协议对待上传文件进行拼装包括:
所述客户端生成文件传输协议的协议头;
所述客户端获取待上传文件的扩展名,并将所述扩展名转换为一个字节的数据作为文件类型;
所述客户端将所述待上传文件的数据流转换为数据缓冲区对象以作为文件传输协议的协议数据体;
所述客户端根据所述协议头、所述文件类型和所述协议数据体创建文件存储对象以对所述待上传文件进行拼装。
7.根据权利要求6所述的方法,其特征在于,对所述文件对象进行协议解析包括:
根据所述文件对象的前四个字节解析得到协议头;
根据所述文件对象的第五个字节解析得到文件类型;
根据所述文件对象的第五个字节之后的数据部分解析得到待上传文件的数据流。
8.根据权利要求7所述的方法,其特征在于,保存所述待上传文件之前,还包括:
将所述待上传文件的数据流转换为图像缓冲区对象。
9.一种上传文件的方法,其特征在于,包括:
客户端与服务端建立长连接;
所述客户端基于websocket的文件传输协议对待上传文件进行拼装,并通过所述长连接将拼装得到的文件对象发送给所述服务端;
所述服务端接收所述客户端发来的文件对象,对所述文件对象进行协议解析得到所述待上传文件,并保存所述待上传文件。
10.一种上传文件的装置,其特征在于,包括:
第一连接模块,用于与服务端建立长连接;
文件拼装模块,用于基于websocket的文件传输协议对待上传文件进行拼装;
文件发送模块,用于通过所述长连接将拼装得到的文件对象发送给所述服务端,以使所述服务端对所述文件对象进行协议解析得到所述待上传文件,并保存所述待上传文件。
11.一种上传文件的装置,其特征在于,包括:
第二连接模块,用于与客户端建立长连接;
文件接收模块,用于接收所述客户端通过所述长连接上传的文件对象,所述文件对象由所述客户端基于websocket的文件传输协议对待上传文件进行拼装得到;
文件解析模块,用于对所述文件对象进行协议解析得到所述待上传文件,并保存所述待上传文件。
12.一种上传文件的系统,其特征在于,包括连接建立模块,客户端和服务端,其中:
所述连接建立模块,用于使客户端与服务端建立长连接;
所述客户端,用于基于websocket的文件传输协议对待上传文件进行拼装,并通过所述长连接将拼装得到的文件对象发送给所述服务端;
所述服务端,用于接收所述客户端发来的文件对象,对所述文件对象进行协议解析得到所述待上传文件,并保存所述待上传文件。
13.一种上传文件的电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-4和/或5-8和/或9中任一所述的方法。
14.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-4和/或5-8和/或9中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010266673.7A CN113497821A (zh) | 2020-04-07 | 2020-04-07 | 一种上传文件的方法、装置和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010266673.7A CN113497821A (zh) | 2020-04-07 | 2020-04-07 | 一种上传文件的方法、装置和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113497821A true CN113497821A (zh) | 2021-10-12 |
Family
ID=77995570
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010266673.7A Pending CN113497821A (zh) | 2020-04-07 | 2020-04-07 | 一种上传文件的方法、装置和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113497821A (zh) |
-
2020
- 2020-04-07 CN CN202010266673.7A patent/CN113497821A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4363847B2 (ja) | インタラクティブ・テレビ用のデジタル・テレビ・アプリケーション・プロトコル | |
US9350763B1 (en) | HTTP tunnelling over websockets | |
CN109510754B (zh) | 在线文档生成方法、装置、系统和电子设备 | |
CN108696899B (zh) | Sip消息传输与接收方法及传输与接收装置 | |
CN112073307B (zh) | 邮件处理方法、装置、电子设备及计算机可读介质 | |
CN103532984A (zh) | websocket协议的数据传输方法、设备和系统 | |
CN113542902B (zh) | 一种视频处理方法、装置、电子设备和存储介质 | |
US11868707B2 (en) | Information interaction method and apparatus, server, system, and storage medium | |
CN101771928B (zh) | 一种网页发送方法和系统以及代理服务器 | |
CN113382083B (zh) | 一种网页截图方法和装置 | |
JP2014514639A (ja) | リアルタイム画像を送信するためのシステムおよび方法 | |
CN111625308B (zh) | 一种信息展示方法、装置和电子设备 | |
JP2022536387A (ja) | ビデオデータの処理方法、装置、電子機器およびコンピュータ可読媒体 | |
US8706803B1 (en) | Client-side generation of preliminary version of network page | |
CN112965673A (zh) | 内容的打印方法、装置、设备及存储介质 | |
CN113076294A (zh) | 一种信息分享方法和装置 | |
US9754327B2 (en) | Method and apparatus for configuring social networking site sharing functions | |
CN109005250B (zh) | 用于访问服务端的方法和装置 | |
JP7217181B2 (ja) | ウェアラブルデバイス、情報処理方法、装置及びシステム | |
CN111754600A (zh) | 海报图像生成方法、装置和电子设备 | |
CN112149392A (zh) | 一种富文本编辑方法和装置 | |
CN113497821A (zh) | 一种上传文件的方法、装置和系统 | |
CN110830427A (zh) | 一种netty环境下的消息编码、消息解码的方法和装置 | |
CN113542335A (zh) | 一种信息共享方法、装置、电子设备及存储介质 | |
CN113824756A (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 |