CN115037741B - 一种文件传输方法及装置 - Google Patents

一种文件传输方法及装置 Download PDF

Info

Publication number
CN115037741B
CN115037741B CN202210964386.2A CN202210964386A CN115037741B CN 115037741 B CN115037741 B CN 115037741B CN 202210964386 A CN202210964386 A CN 202210964386A CN 115037741 B CN115037741 B CN 115037741B
Authority
CN
China
Prior art keywords
file
storage
size
fragment
transmission
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
Application number
CN202210964386.2A
Other languages
English (en)
Other versions
CN115037741A (zh
Inventor
金和平
朱强
陈云鹏
王建东
辜斌
刘晓青
田武
赵鲲
周灿
潘建初
张晓萌
姜鹏
习兰云
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Three Gorges High Technology Information Technology Co ltd
China Three Gorges Corp
Original Assignee
Three Gorges High Technology Information Technology Co ltd
China Three Gorges Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Three Gorges High Technology Information Technology Co ltd, China Three Gorges Corp filed Critical Three Gorges High Technology Information Technology Co ltd
Priority to CN202210964386.2A priority Critical patent/CN115037741B/zh
Publication of CN115037741A publication Critical patent/CN115037741A/zh
Application granted granted Critical
Publication of CN115037741B publication Critical patent/CN115037741B/zh
Priority to EP23169640.2A priority patent/EP4322018A1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种文件传输方法及装置,该方法包括:接收前端发出的异步上传请求,并在响应异步上传请求后接收前端上传的多个分片文件;其中,多个分片文件由前端对传输文件进行分片的方式生成;对多个分片文件进行多线程存储,生成文件存储执行结果,将文件存储执行结果发送给前端;接收前端发送的文件合并请求,并基于文件合并请求合并多个分片文件,生成存储文件;其中,文件合并请求由前端基于文件存储执行结果生成。本方法提升了文件的传输速度,避免了同步请求用户等待超时的问题,让用户在文件传输同时进行其他业务数据处理,有效节省业务处理等待时间。

Description

一种文件传输方法及装置
技术领域
本发明涉及数据传输技术领域,具体涉及一种文件传输方法及装置。
背景技术
在B/S架构(Browser/Server Architecture,浏览器和服务端架构)系统中常常采用HTTP(Hyper Text Transfer Protocol,超文本传输协议)或FTP(File TransferProtocol,文件传输协议)进行文件的上传与下载,对文档类文件一般采用转PDF(PortableDocument Format,可携带文档格式)或转图片格式实现在线预览功能。
但是在IDC(Internet Data Center,互联网数据中心)项目工程数字化交付场景中,文件种类较多、文件实体较大,采用常规方式进行文件上传下载受限于文件大小、网络带宽等因素影响,速度难以保障,无法满足应用使用需求。
发明内容
因此,本发明要解决的技术问题在于克服现有技术中的采用常规方式对大文件进行上传下载受限于文件大小、网络带宽等因素影响,速度难以保障,无法满足应用使用需求的缺陷,从而提供一种文件传输方法及装置。
本发明实施例提供了一种文件传输方法,应用于服务端,包括:
接收前端发出的异步上传请求,并在响应所述异步上传请求后接收所述前端上传的多个分片文件;其中,所述多个分片文件由所述前端对传输文件进行分片的方式生成;
对所述多个分片文件进行多线程存储,生成文件存储执行结果,将所述文件存储执行结果发送给所述前端;
接收所述前端发送的文件合并请求,并基于所述文件合并请求合并所述多个分片文件,生成存储文件;其中,所述文件合并请求由所述前端基于所述文件存储执行结果生成。
本发明提供的一种文件传输方法,通过对传输文件进行分片,将大文件拆分,降低了单次上传请求的文件体量,提升了文件的传输速度,并且,基于异步上传请求和多线程存储完成传输文件的异步上传与存储,可以有效解决大文件在浏览器端传输造成页面等待超时或浏览器内存崩溃等问题,同时避免了同步请求用户等待超时的问题,让用户在文件传输同时进行其他业务数据处理,有效节省业务处理等待时间。
可选地,所述异步上传请求,包括:
分片地址、分片序号、上传分片大小和总分片数。
可选地,所述基于所述异步上传请求对所述多个分片文件进行多线程存储,生成文件存储执行结果,包括:
获取文件存储部署类型,基于所述文件存储部署类型与所述分片大小对分别对所述多个分片文件进行多线程存储;
将多线程存储后的分片文件数量与所述异步上传请求中的总分片数进行比较,当所述多线程存储后的分片文件数量与所述异步上传请求中的总分片数相同时,生成文件存储执行结果。
上述将分片文件进行多线程存储,充分利用了网络带宽与服务端的处理能力,提升了存储能力,降低了用户等待时间。
可选地,所述基于所述文件存储部署类型与所述分片大小对分别对所述多个分片文件进行多线程存储,包括:
当文件存储部署类型为多服务器存储时,将所述分片大小与预设存储大小进行比较,当所述分片大小大于所述预设存储大小时,根据所述分片大小与所述预设存储大小生成异步线程数,基于所述异步线程数存储所述多个分片文件。
可选地,还包括:
通过所述服务端获取文件预览请求,基于所述文件预览请求调取所述传输文件,并对所述传输文件进行预处理,生成预览文件,将所述预览文件传输给所述前端进行显示。
可选地,所述对所述传输文件进行预处理,生成预览文件,将所述预览文件传输给所述前端进行显示,包括:
对所述存储文件的类型进行判断,当所述存储文件的类型为图片类文件或纯文本类文件时,则将所述图片类文件或所述纯文本类文件传输给所述前端进行显示;
当所述存储文件的类型为电子文档类文件时,则将所述电子文档类文件转换为便携式文档文件;
将所述便携式文档文件的文件大小与预设阈值进行比较,当所述便携式文档文件的文件大小大于预设阈值时,则对所述便携式文档文件进行文档分页,生成便携式分页文档,将所述便携式分页文档传输给所述前端进行分页显示。
上述将电子文档类文件转换为便携式文档文件后进行分页,在有限带宽条件下避免了请求体量过大、内存溢出、请求超时等问题,保证了传输速率,极大降低了响应时间。
在本申请的第二个方面,还提出了一种文件传输方法,应用于前端,包括:
采集传输文件,对所述传输文件进行分片,生成多个分片文件,并向服务端发起异步上传请求,以及接收到服务端的响应后上传所述多个分片文件;其中,所述服务端用于通过对所述多个分片文件进行多线程存储,以生成文件存储执行结果;
接收服务端发送的所述文件存储执行结果,并基于所述文件存储执行结果向服务端发送文件合并请求;所述服务端用于基于所述文件合并请求合并所述多个分片文件,以生成存储文件。
可选地,所述对所述传输文件进行分片,生成多个分片文件,包括:
将所述传输文件的文件大小与预设分片大小进行比较,当所述传输文件的文件大小大于所述预设分片大小时,基于所述预设分片大小对所述传输文件进行分片,生成所述多个分片。
上述基于预设分片大小对传输文件进行分片,将大文件拆分,降低了单次上传请求的文件体量,提升了传输速度。
在本申请的第三个方面,还提出了一种文件传输装置,应用于服务端,包括:
接收模块,用于接收前端发出的异步上传请求,并在响应所述异步上传请求后接收所述前端上传的多个分片文件;其中,所述多个分片文件由所述前端对传输文件进行分片的方式生成;
存储模块,用于对所述多个分片文件进行多线程存储,生成文件存储执行结果,将所述文件存储执行结果发送给所述前端;
合并模块,用于接收所述前端发送的文件合并请求,并基于所述文件合并请求合并所述多个分片文件,生成存储文件;其中,所述文件合并请求由所述前端基于所述文件存储执行结果生成。
可选地,所述异步上传请求,包括:
分片地址、分片序号、上传分片大小和总分片数。
可选地,所述存储模块,包括:
存储单元,用于获取文件存储部署类型,基于所述文件存储部署类型与所述分片大小对分别对所述多个分片文件进行多线程存储;
比较单元,用于将多线程存储后的分片文件数量与所述异步上传请求中的总分片数进行比较,当所述多线程存储后的分片文件数量与所述异步上传请求中的总分片数相同时,生成文件存储执行结果。
可选地,所述存储单元,包括:
当文件存储部署类型为多服务器存储时,将所述分片大小与预设存储大小进行比较,当所述分片大小大于所述预设存储大小时,根据所述分片大小与所述预设存储大小生成异步线程数,基于所述异步线程数存储所述多个分片文件。
可选地,还包括:
预览模块,用于获取文件预览请求,基于所述文件预览请求调取所述传输文件,并对所述传输文件进行预处理,生成预览文件,将所述预览文件传输给所述前端进行显示。
可选地,所述预览模块,包括:
判断单元,用于对所述存储文件的类型进行判断,当所述存储文件的类型为图片类文件或纯文本类文件时,则将所述图片类文件或所述纯文本类文件传输给所述前端进行显示;
转换单元,用于当所述存储文件的类型为电子文档类文件时,则将所述电子文档类文件转换为便携式文档文件;
分页单元,用于将所述便携式文档文件的文件大小与预设阈值进行比较,当所述便携式文档文件的文件大小大于预设阈值时,则对所述便携式文档文件进行文档分页,生成便携式分页文档,将所述便携式分页文档传输给所述前端进行分页显示。
在本申请的第四个方面,还提出了一种文件传输装置,应用于前端,包括:
分片模块,用于采集传输文件,对所述传输文件进行分片,生成多个分片文件,并向服务端发起异步上传请求,以及接收到服务端的响应后上传所述多个分片文件;其中,所述服务端用于通过对所述多个分片文件进行多线程存储,以生成文件存储执行结果;
调取模块,用于接收服务端发送的所述文件存储执行结果,并基于所述文件存储执行结果向服务端发送文件合并请求;所述服务端用于基于所述文件合并请求合并所述多个分片文件,以生成存储文件。
可选地,所述分片模块,包括:
将所述传输文件的文件大小与预设分片大小进行比较,当所述传输文件的文件大小大于所述预设分片大小时,基于所述预设分片大小对所述传输文件进行分片,生成所述多个分片。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例1中一种文件传输方法的流程图;
图2为本发明实施例1中一种文件传输方法的示意图;
图3为本发明实施例1中步骤S102的流程图;
图4为本发明实施例1中步骤S104的流程图;
图5为本发明实施例2中一种文件传输方法的流程图;
图6为本发明实施例3中一种文件传输装置的原理框图;
图7为本发明实施例4中一种文件传输装置的原理框图。
具体实施方式
下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的系统或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
此外,下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。
实施例1
本实施例提供一种文件传输方法,应用于服务端,如图1-2所示,包括:
S101、接收前端发出的异步上传请求,并在响应上述异步上传请求后接收上述前端上传的多个分片文件;其中,上述多个分片文件由上述前端对传输文件进行分片的方式生成。
具体的,上述异步上传请求,包括:分片地址(文件名+文件序号+文件大小的校验值)、分片序号、分片大小和总分片数,其中,文件大小的校验值采用MD5(Message-DigestAlgorithm,一种被广泛使用的密码散列函数)校验值。
S102、对上述多个分片文件进行多线程存储,生成文件存储执行结果,将上述文件存储执行结果发送给上述前端。
进一步地,服务端接收到异步上传请求后根据分片文件的大小判断执行单线程上传还是多线程上传,并在上传完成后反馈文件存储执行结果(包含文件分片ID、上传是否成功)。
S103、接收上述前端发送的文件合并请求,并基于上述文件合并请求合并上述多个分片文件,生成存储文件;其中,上述文件合并请求由上述前端基于上述文件存储执行结果生成。
具体的,服务端校验多个分片文件是否均存在,当多个分片文件均存在时,执行合并返回执行结果,前端根据该执行结果更新上传进度,关闭上传面板,返回执行结果供组件调用方完成后续业务逻辑处理。
上述一种文件传输方法,通过对传输文件进行分片,将大文件拆分,降低了单次上传请求的文件体量,提升了文件的传输速度,并且,基于异步上传请求和多线程存储完成传输文件的异步上传与存储,可以有效解决大文件在浏览器端传输造成页面等待超时或浏览器内存崩溃等问题,同时避免了同步请求用户等待超时的问题,让用户在文件传输同时进行其他业务数据处理,有效节省业务处理等待时间。
优选地,如图3所示,步骤S102中基于上述异步上传请求对上述多个分片文件进行多线程存储,生成文件存储执行结果,包括:
S1021、获取文件存储部署类型,基于上述文件存储部署类型与上述分片大小对分别对上述多个分片文件进行多线程存储。
具体的,当文件存储部署类型为多服务器存储时,将上述分片大小与预设存储大小进行比较,当上述分片大小大于上述预设存储大小时,根据上述分片大小与上述预设存储大小生成异步线程数,基于上述异步线程数存储上述多个分片文件。
进一步地,服务端根据文件存储部署类型(单服务器存储和多服务器存储)、传输文件(即每次传输的分片文件)大小情况和服务器间网络带宽限制判定是否执行多线程存储,其中,当服务端数据处理与文件存储服务部署在同一服务端时,因不受网络限制,可直接采用单线程存储;其中,预设存储大小根据网络带宽设置,其设置过程与上述最小分片原则的设置过程一致。
进一步地,当传输中断时,服务端根据待传输分片文件的MD5校验值与上一次传输的分片文件的MD5校验值进行对比,当相同时认为分片文件属于同一传输文件,直接返回操作成功,待传输的分片文件继续上传,当不相同时服务端完成分片文件存储至文件服务端操作,返回存储执行结果,进而获取下一传输文件。
S1022、将多线程存储后的分片文件数量与上述异步上传请求中的总分片数进行比较,当上述多线程存储后的分片文件数量与上述异步上传请求中的总分片数相同时,生成文件存储执行结果。
优选地,还包括:
S104、获取文件预览请求,基于上述文件预览请求调取上述存储文件,并对上述存储文件进行预处理,生成预览文件,将上述预览文件传输给上述前端进行显示。
进一步地,用户在前端选择要预览的文件记录,前端发起文件预览请求,服务端接收文件预览请求,校验本地缓存是否存在请求文件(即传输文件),存在则直接返回文件流,继续对传输文件进行预处理;当文件不存在时执行多线程文件下载,前端等待文件流下载完毕后,提示用户保存文件;其中,多线程文件下载的具体步骤为:根据线程文件分片大小(可以提前人为设置,也可以利用上述最小分片原则进行设置),待下载文件的大小除以线程文件分片大小得出分片数,将文件按分片数创建下载线程,完成大文件分片下载,提升文件读取速度。
优选地,如图4所示,步骤S104中上述对上述传输文件进行预处理,生成预览文件,将上述预览文件传输给上述前端进行显示,包括:
S1041、对上述存储文件的类型进行判断,当上述存储文件的类型为图片类文件或纯文本类文件时,则将上述图片类文件或上述纯文本类文件传输给上述前端进行显示。
其中,存储文件的类型包括图片类文件、纯文本(TXT)类文件、电子文档(OFFICE)类文件。
具体的,当存储文件的类型为图片类文件或纯文本类文件时,直接返回传输文件在服务端的缓存地址(当服务端无缓存文件时需从文件服务端下载并缓存),调取该传输文件至前端,前端直接对该传输文件渲染展示。
S1042、当上述存储文件的类型为电子文档类文件时,则将上述电子文档类文件转换为便携式文档文件。
具体的,服务端将OFFICE(电子文档类)文件转换为PDF(便携式文档)文件。
S1043、将上述便携式文档文件的文件大小与预设阈值进行比较,当上述便携式文档文件的文件大小大于预设阈值时,则对上述便携式文档文件进行文档分页,生成便携式分页文档,将上述便携式分页文档传输给上述前端进行分页显示。
具体的,OFFICE文件的大小超过限定值(即预设阈值,一般为2兆,可根据服务端带宽调整)时,则对OFFICE文件对应的PDF文件进行文档分页,并返回分页文件流,服务端依赖PDDocument工具类(一种创建PDF文档的工具)完成PDF文件加载,并利用PDF阅读器完成PDF文件内容读取与渲染后,通过渲染函数完成指定页码区间内容读取,例如renderer.renderImage(page,scale)函数,即渲染.导入和保存渲染(页码,缩放比例)。
进一步地,前端接收PDF类文件,并调用PDF预览组件分页查看。
进一步地,除图片类文件、纯文本类文件和电子文档类文件外,其他文件直接返回文件下载流,前端执行文件下载提示,由用户选择是否保存本地并查看。
实施例2
本实施例提供一种文件传输方法,应用于前端,如图5所示,包括:
S201、采集传输文件,对上述传输文件进行分片,生成多个分片文件,并向服务端发起异步上传请求,以及接收到服务端的响应后上传上述多个分片文件;其中,上述服务端用于通过对上述多个分片文件进行多线程存储,以生成文件存储执行结果。
其中,如图2所示,将上述传输文件的文件大小与预设分片大小进行比较,当上述传输文件的文件大小大于预设分片大小时,基于上述预设分片大小对上述传输文件进行分片,生成上述多个分片文件,并为每一个分片文件附加一个异步上传请求,根据分片文件的时间序列将分片文件依次上传给服务端;当上述传输文件的文件大小小于或等于预设分片大小时,直接将传输文件上传给服务端。
其中,前端在传输文件上传时,根据传输文件的大小,按最小分片原则做分片(一般为5兆/片)。
一般情况下,1M(兆)带宽网络,其文件传输速度为:
V=1*1024/8=128KB/S=0.125M/S
其中,KB/S表示千字节/秒,M/S表示兆/秒。
10M带宽情况下理论传输速度为:V=1.25M/S,如果一个5M大小的文件完成传输理论耗时T=5/1.25=4S,但因网络损耗、应用并发、服务端管理等需要,实际传输速度会偏低。
进而,最小分片原则为:在测算不同网络带宽传输速度后,以不超过限定带宽的理论传输速度的最小整数为基准,以传输耗时不超过理论耗时50%为限定进行向上取整,则文件分片大小E取值为:
E=Math.ceil(B/Math.floor(V)*0.5)
其中,B表示带宽大小(单位:Mbps,兆比特每秒),Math.floor表示数学函数库中的一个函数,math.floor(x)表示返回小于参数x的最大整数,即对浮点数向下取整,Math.ceil表示lua(一种脚本语言)中的一个函数,math.ceil(x)表示返回大于等于参数x的最小整数,即对浮点数向上取整,当单个文件大小超过分片限制时,则执行分片传输操作,否则执行单文件传输。
以10M带宽为例,则文件分片大小取值为:
E=Math.ceil(10/Math.floor(1.25)*0.5)=5M
即分片限制为5M,当文件大小超过5M时即执行分片。
进一步地,前端监听分片上传进程,并动态更新上线进度条。
S202、接收服务端发送的上述文件存储执行结果,并基于上述文件存储执行结果向服务端发送文件合并请求;上述服务端用于基于上述文件合并请求合并上述多个分片文件,以生成存储文件。
具体的,前端等待多个分片文件传输成功后,调取文件合并请求。
实施例3
本实施例提供一种文件传输装置,应用于服务端,如图6所示,包括:
接收模块61,用于接收前端发出的异步上传请求,并在响应上述异步上传请求后接收上述前端上传的多个分片文件;其中,上述多个分片文件由上述前端对传输文件进行分片的方式生成。
具体的,上述异步上传请求,包括:分片地址(文件名+文件序号+文件大小的校验值)、分片序号、分片大小和总分片数,其中,文件大小的校验值采用MD5(Message-DigestAlgorithm,一种被广泛使用的密码散列函数)校验值。
存储模块62,用于对上述多个分片文件进行多线程存储,生成文件存储执行结果,将上述文件存储执行结果发送给上述前端。
进一步地,服务端接收到异步上传请求后根据分片文件的大小判断执行单线程上传还是多线程上传,并在上传完成后反馈文件存储执行结果(包含文件分片ID、上传是否成功)。
合并模块63,用于接收上述前端发送的文件合并请求,并基于上述文件合并请求合并上述多个分片文件,生成存储文件;其中,上述文件合并请求由上述前端基于上述文件存储执行结果生成。
具体的,服务端校验多个分片文件是否均存在,当多个分片文件均存在时,执行合并返回执行结果,前端根据该执行结果更新上传进度,关闭上传面板,返回执行结果供组件调用方完成后续业务逻辑处理。
上述一种文件传输方法,通过对传输文件进行分片,将大文件拆分,降低了单次上传请求的文件体量,提升了文件的传输速度,并且,基于异步上传请求和多线程存储完成传输文件的异步上传与存储,可以有效解决大文件在浏览器端传输造成页面等待超时或浏览器内存崩溃等问题,同时避免了同步请求用户等待超时的问题,让用户在文件传输同时进行其他业务数据处理,有效节省业务处理等待时间。
优选地,上述存储模块62,包括:
存储单元621,用于获取文件存储部署类型,基于上述文件存储部署类型与上述分片大小对分别对上述多个分片文件进行多线程存储。
具体的,当文件存储部署类型为多服务器存储时,将上述分片大小与预设存储大小进行比较,当上述分片大小大于上述预设存储大小时,根据上述分片大小与上述预设存储大小生成异步线程数,基于上述异步线程数存储上述多个分片文件。
进一步地,服务端根据文件存储部署类型(单服务器存储和多服务器存储)、传输文件(即每次传输的分片文件)大小情况和服务器间网络带宽限制判定是否执行多线程存储,其中,当服务端数据处理与文件存储服务部署在同一服务端时,因不受网络限制,可直接采用单线程存储;其中,预设存储大小根据网络带宽设置,其设置过程与上述最小分片原则的设置过程一致。
进一步地,当传输中断时,服务端根据待传输分片文件的MD5校验值与上一次传输的分片文件的MD5校验值进行对比,当相同时认为分片文件属于同一传输文件,直接返回操作成功,待传输的分片文件继续上传,当不相同时服务端完成分片文件存储至文件服务端操作,返回存储执行结果,进而获取下一传输文件。
比较单元622,用于将多线程存储后的分片文件数量与上述异步上传请求中的总分片数进行比较,当上述多线程存储后的分片文件数量与上述异步上传请求中的总分片数相同时,生成文件存储执行结果。
优选地,还包括:
预览模块64,用于获取文件预览请求,基于上述文件预览请求调取上述存储文件,并对上述存储文件进行预处理,生成预览文件,将上述预览文件传输给上述前端进行显示。
进一步地,用户在前端选择要预览的文件记录,前端发起文件预览请求,服务端接收文件预览请求,校验本地缓存是否存在请求文件(即传输文件),存在则直接返回文件流,继续对传输文件进行预处理;当文件不存在时执行多线程文件下载,前端等待文件流下载完毕后,提示用户保存文件;其中,多线程文件下载的具体步骤为:根据线程文件分片大小(可以提前人为设置,也可以利用上述最小分片原则进行设置),待下载文件的大小除以线程文件分片大小得出分片数,将文件按分片数创建下载线程,完成大文件分片下载,提升文件读取速度。
优选地,上述预览模块64,包括:
判断单元641,用于对上述存储文件的类型进行判断,当上述存储文件的类型为图片类文件或纯文本类文件时,则将上述图片类文件或上述纯文本类文件传输给上述前端进行显示。
其中,存储文件的类型包括图片类文件、纯文本(TXT)类文件、电子文档(OFFICE)类文件。
具体的,当存储文件的类型为图片类文件或纯文本类文件时,直接返回传输文件在服务端的缓存地址(当服务端无缓存文件时需从文件服务端下载并缓存),调取该传输文件至前端,前端直接对该传输文件渲染展示。
转换单元642,用于当上述存储文件的类型为电子文档类文件时,则将上述电子文档类文件转换为便携式文档文件。
具体的,服务端将OFFICE(电子文档类)文件转换为PDF(便携式文档)文件。
分页单元643,用于将上述便携式文档文件的文件大小与预设阈值进行比较,当上述便携式文档文件的文件大小大于预设阈值时,则对上述便携式文档文件进行文档分页,生成便携式分页文档,将上述便携式分页文档传输给上述前端进行分页显示。
具体的,OFFICE文件的大小超过限定值(即预设阈值,一般为2兆,可根据服务端带宽调整)时,则对OFFICE文件对应的PDF文件进行文档分页,并返回分页文件流,服务端依赖PDDocument工具类(一种创建PDF文档的工具)完成PDF文件加载,并利用PDF阅读器完成PDF文件内容读取与渲染后,通过渲染函数完成指定页码区间内容读取,例如renderer.renderImage(page,scale)函数,即渲染.导入和保存渲染(页码,缩放比例)。
进一步地,前端接收PDF类文件,并调用PDF预览组件分页查看。
进一步地,除图片类文件、纯文本类文件和电子文档类文件外,其他文件直接返回文件下载流,前端执行文件下载提示,由用户选择是否保存本地并查看。
实施例4
本实施例提供一种文件传输装置,应用于前端,如图7所示,包括:
分片模块71,用于采集传输文件,对上述传输文件进行分片,生成多个分片文件,并向服务端发起异步上传请求,以及接收到服务端的响应后上传上述多个分片文件;其中,上述服务端用于通过对上述多个分片文件进行多线程存储,以生成文件存储执行结果。
其中,将上述传输文件的文件大小与预设分片大小进行比较,当上述传输文件的文件大小大于预设分片大小时,基于上述预设分片大小对上述传输文件进行分片,生成上述多个分片文件,并为每一个分片文件附加一个异步上传请求,根据分片文件的时间序列将分片文件依次上传给服务端;当上述传输文件的文件大小小于或等于预设分片大小时,直接将传输文件上传给服务端。
其中,前端在传输文件上传时,根据传输文件的大小,按最小分片原则做分片(一般为5兆/片)。
一般情况下,1M(兆)带宽网络,其文件传输速度为:
V=1*1024/8=128KB/S=0.125M/S
其中,KB/S表示千字节/秒,M/S表示兆/秒。
10M带宽情况下理论传输速度为:V=1.25M/S,如果一个5M大小的文件完成传输理论耗时T=5/1.25=4S,但因网络损耗、应用并发、服务端管理等需要,实际传输速度会偏低。
进而,最小分片原则为:在测算不同网络带宽传输速度后,以不超过限定带宽的理论传输速度的最小整数为基准,以传输耗时不超过理论耗时50%为限定进行向上取整,则文件分片大小E取值为:
E=Math.ceil(B/Math.floor(V)*0.5)
其中,B表示带宽大小(单位:Mbps,兆比特每秒),Math.floor表示数学函数库中的一个函数,math.floor(x)表示返回小于参数x的最大整数,即对浮点数向下取整,Math.ceil表示lua(一种脚本语言)中的一个函数,math.ceil(x)表示返回大于等于参数x的最小整数,即对浮点数向上取整,当单个文件大小超过分片限制时,则执行分片传输操作,否则执行单文件传输。
以10M带宽为例,则文件分片大小取值为:
E=Math.ceil(10/Math.floor(1.25)*0.5)=5M
即分片限制为5M,当文件大小超过5M时即执行分片。
进一步地,前端监听分片上传进程,并动态更新上线进度条。
调取模块72,用于接收服务端发送的上述文件存储执行结果,并基于上述文件存储执行结果向服务端发送文件合并请求;上述服务端用于基于上述文件合并请求合并上述多个分片文件,以生成存储文件。
具体的,前端等待多个分片文件传输成功后,调取文件合并请求。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的系统。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令系统的制造品,该指令系统实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本发明创造的保护范围之中。

Claims (7)

1.一种文件传输方法,应用于服务端,其特征在于,包括:
接收前端发出的异步上传请求,并在响应所述异步上传请求后接收所述前端上传的多个分片文件;其中,所述多个分片文件由所述前端对传输文件进行分片的方式生成;其中,所述异步上传请求,包括:分片地址、分片序号、上传分片大小和总分片数;
对所述多个分片文件进行多线程存储,生成文件存储执行结果,将所述文件存储执行结果发送给所述前端;
接收所述前端发送的文件合并请求,并基于所述文件合并请求合并所述多个分片文件,生成存储文件;其中,所述文件合并请求由所述前端基于所述文件存储执行结果生成;
所述对所述多个分片文件进行多线程存储,生成文件存储执行结果,包括:
获取文件存储部署类型,基于所述文件存储部署类型与所述分片大小对分别对所述多个分片文件进行多线程存储;
将多线程存储后的分片文件数量与所述异步上传请求中的总分片数进行比较,当所述多线程存储后的分片文件数量与所述异步上传请求中的总分片数相同时,生成文件存储执行结果;其中,根据文件存储部署类型、传输文件大小和服务器间网络带宽限制判定是否执行多线程存储,其中,当服务端数据处理与文件存储服务部署在同一服务端时,不受网络限制,采用单线程存储;其中,预设存储大小根据网络带宽设置;
所述基于所述文件存储部署类型与所述分片大小对分别对所述多个分片文件进行多线程存储,包括:
当文件存储部署类型为多服务器存储时,将所述分片大小与预设存储大小进行比较,当所述分片大小大于所述预设存储大小时,根据所述分片大小与所述预设存储大小生成异步线程数,基于所述异步线程数存储所述多个分片文件。
2.根据权利要求1所述的一种文件传输方法,其特征在于,还包括:
获取文件预览请求,基于所述文件预览请求调取所述存储文件,并对所述存储文件进行预处理,生成预览文件,将所述预览文件传输给所述前端进行显示。
3.根据权利要求2所述的一种文件传输方法,其特征在于,所述对所述存储文件进行预处理,生成预览文件,将所述预览文件传输给所述前端进行显示,包括:
对所述存储文件的类型进行判断,当所述存储文件的类型为图片类文件或纯文本类文件时,则将所述图片类文件或所述纯文本类文件传输给所述前端进行显示;
当所述存储文件的类型为电子文档类文件时,则将所述电子文档类文件转换为便携式文档文件;
将所述便携式文档文件的文件大小与预设阈值进行比较,当所述便携式文档文件的文件大小大于预设阈值时,则对所述便携式文档文件进行文档分页,生成便携式分页文档,将所述便携式分页文档传输给所述前端进行分页显示。
4.一种文件传输方法,应用于前端,其特征在于,包括:
采集传输文件,对所述传输文件进行分片,生成多个分片文件,并向服务端发起异步上传请求,以及接收到服务端的响应后上传所述多个分片文件;其中,所述服务端用于通过对所述多个分片文件进行多线程存储,以生成文件存储执行结果;其中,根据传输文件的大小,按最小分片原则进行分片;最小分片原则为:测算不同网络带宽传输速度,以不超过限定带宽的理论传输速度的最小整数为基准,以传输耗时不超过理论耗时50%为限定进行向上取整,文件分片大小E取值为:
E=Math.ceil(B/Math.floor(V)*0.5)
其中,B表示带宽大小,Math.floor表示数学函数库中的一个函数,M ath.floor(x)表示返回小于参数x的最大整数,Math.ceil表示一种脚本语言中的一个函数,M ath.ceil(x)表示返回大于等于参数x的最小整数;
接收服务端发送的所述文件存储执行结果,并基于所述文件存储执行结果向服务端发送文件合并请求;所述服务端用于基于所述文件合并请求合并所述多个分片文件,以生成存储文件。
5.根据权利要求4所述的一种文件传输方法,其特征在于,所述对所述传输文件进行分片,生成多个分片文件,包括:
将所述传输文件的文件大小与预设分片大小进行比较,当所述传输文件的文件大小大于所述预设分片大小时,基于所述预设分片大小对所述传输文件进行分片,生成所述多个分片。
6.一种文件传输装置,应用于服务端,其特征在于,包括:
接收模块,用于接收前端发出的异步上传请求,并在响应所述异步上传请求后接收所述前端上传的多个分片文件;其中,所述多个分片文件由所述前端对传输文件进行分片的方式生成;其中,所述异步上传请求,包括:分片地址、分片序号、上传分片大小和总分片数;
存储模块,用于对所述多个分片文件进行多线程存储,生成文件存储执行结果,将所述文件存储执行结果发送给所述前端;
合并模块,用于接收所述前端发送的文件合并请求,并基于所述文件合并请求合并所述多个分片文件,生成存储文件;其中,所述文件合并请求由所述前端基于所述文件存储执行结果生成;
所述存储模块,包括:
存储单元,用于获取文件存储部署类型,基于所述文件存储部署类型与所述分片大小对分别对所述多个分片文件进行多线程存储;其中,当文件存储部署类型为多服务器存储时,将所述分片大小与预设存储大小进行比较,当所述分片大小大于所述预设存储大小时,根据所述分片大小与所述预设存储大小生成异步线程数,基于所述异步线程数存储所述多个分片文件;其中,根据文件存储部署类型、传输文件大小和服务器间网络带宽限制判定是否执行多线程存储,其中,当服务端数据处理与文件存储服务部署在同一服务端时,不受网络限制,采用单线程存储;其中,预设存储大小根据网络带宽设置;
比较单元,用于将多线程存储后的分片文件数量与所述异步上传请求中的总分片数进行比较,当所述多线程存储后的分片文件数量与所述异步上传请求中的总分片数相同时,生成文件存储执行结果。
7.一种文件传输装置,应用于前端,其特征在于,包括:
分片模块,用于采集传输文件,对所述传输文件进行分片,生成多个分片文件,并向服务端发起异步上传请求,以及接收到服务端的响应后上传所述多个分片文件;其中,所述服务端用于通过对所述多个分片文件进行多线程存储,以生成文件存储执行结果;其中,根据传输文件的大小,按最小分片原则进行分片;最小分片原则为:测算不同网络带宽传输速度,以不超过限定带宽的理论传输速度的最小整数为基准,以传输耗时不超过理论耗时50%为限定进行向上取整,文件分片大小E取值为:
E=Math.ceil(B/Math.floor(V)*0.5)
其中,B表示带宽大小,Math.floor表示数学函数库中的一个函数,M ath.floor(x)表示返回小于参数x的最大整数,Math.ceil表示一种脚本语言中的一个函数,M ath.ceil(x)表示返回大于等于参数x的最小整数;
调取模块,用于接收服务端发送的所述文件存储执行结果,并基于所述文件存储执行结果向服务端发送文件合并请求;所述服务端用于基于所述文件合并请求合并所述多个分片文件,以生成存储文件。
CN202210964386.2A 2022-08-11 2022-08-11 一种文件传输方法及装置 Active CN115037741B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210964386.2A CN115037741B (zh) 2022-08-11 2022-08-11 一种文件传输方法及装置
EP23169640.2A EP4322018A1 (en) 2022-08-11 2023-04-24 A file transmitting method and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210964386.2A CN115037741B (zh) 2022-08-11 2022-08-11 一种文件传输方法及装置

Publications (2)

Publication Number Publication Date
CN115037741A CN115037741A (zh) 2022-09-09
CN115037741B true CN115037741B (zh) 2022-11-15

Family

ID=83130974

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210964386.2A Active CN115037741B (zh) 2022-08-11 2022-08-11 一种文件传输方法及装置

Country Status (2)

Country Link
EP (1) EP4322018A1 (zh)
CN (1) CN115037741B (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106027647A (zh) * 2016-05-20 2016-10-12 云南云电同方科技有限公司 Lxpfs集群分布式文件存储系统
CN106657213A (zh) * 2016-09-14 2017-05-10 深圳峰创智诚科技有限公司 文件传输方法和装置
CN109428899A (zh) * 2017-08-21 2019-03-05 中国石油化工股份有限公司 文件安全传输管理方法及系统
CN112615899A (zh) * 2020-11-25 2021-04-06 北京中电普华信息技术有限公司 一种大文件传输方法、装置及系统
CN112632008A (zh) * 2020-12-29 2021-04-09 华录光存储研究院(大连)有限公司 一种数据分片的传输方法、装置及计算机设备
CN112637357A (zh) * 2020-12-29 2021-04-09 成都知道创宇信息技术有限公司 文件传输方法、装置和终端设备
CN113037848A (zh) * 2021-03-18 2021-06-25 上海哔哩哔哩科技有限公司 文件上传方法和系统
CN113535648A (zh) * 2021-07-27 2021-10-22 浪潮卓数大数据产业发展有限公司 一种基于ipfs的分布式云存储方法、设备及存储介质
CN114253929A (zh) * 2021-11-15 2022-03-29 北京计算机技术及应用研究所 一种基于分布式文件存储的网盘系统架构
CN114615258A (zh) * 2022-03-28 2022-06-10 重庆长安汽车股份有限公司 大文件分片上传到文件服务端的方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110582764B (zh) * 2019-07-11 2022-11-15 深圳市鹰硕技术有限公司 一种文件预览方法、装置及存储介质
US11269536B2 (en) * 2019-09-27 2022-03-08 Open Text Holdings, Inc. Method and system for efficient content transfer to distributed stores

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106027647A (zh) * 2016-05-20 2016-10-12 云南云电同方科技有限公司 Lxpfs集群分布式文件存储系统
CN106657213A (zh) * 2016-09-14 2017-05-10 深圳峰创智诚科技有限公司 文件传输方法和装置
CN109428899A (zh) * 2017-08-21 2019-03-05 中国石油化工股份有限公司 文件安全传输管理方法及系统
CN112615899A (zh) * 2020-11-25 2021-04-06 北京中电普华信息技术有限公司 一种大文件传输方法、装置及系统
CN112632008A (zh) * 2020-12-29 2021-04-09 华录光存储研究院(大连)有限公司 一种数据分片的传输方法、装置及计算机设备
CN112637357A (zh) * 2020-12-29 2021-04-09 成都知道创宇信息技术有限公司 文件传输方法、装置和终端设备
CN113037848A (zh) * 2021-03-18 2021-06-25 上海哔哩哔哩科技有限公司 文件上传方法和系统
CN113535648A (zh) * 2021-07-27 2021-10-22 浪潮卓数大数据产业发展有限公司 一种基于ipfs的分布式云存储方法、设备及存储介质
CN114253929A (zh) * 2021-11-15 2022-03-29 北京计算机技术及应用研究所 一种基于分布式文件存储的网盘系统架构
CN114615258A (zh) * 2022-03-28 2022-06-10 重庆长安汽车股份有限公司 大文件分片上传到文件服务端的方法及装置

Also Published As

Publication number Publication date
EP4322018A1 (en) 2024-02-14
CN115037741A (zh) 2022-09-09

Similar Documents

Publication Publication Date Title
CN106911943B (zh) 一种视频展示方法、装置及存储介质
CN108810657B (zh) 一种设置视频封面的方法和系统
CN110471749B (zh) 任务处理方法、装置、计算机可读存储介质和计算机设备
CN110297927B (zh) 文章发布方法、装置、设备及存储介质
US9215292B2 (en) Information processing apparatus, data distribution system, method of controlling information processing apparatus, and storage medium
CN111225058A (zh) 一种文件上传方法及相关产品
CN111935227A (zh) 通过浏览器上传文件的方法、浏览器和电子设备
CN111381749A (zh) 一种图像显示和处理方法、装置、设备和存储介质
CN115037741B (zh) 一种文件传输方法及装置
CN110839074A (zh) 一种数据请求接收处理方法及装置
CN104281590B (zh) 图片上传方法、装置、应用交互平台、终端及系统
CN109788251A (zh) 视频处理方法、装置及存储介质
CN109710783B (zh) 一种图片加载方法、装置、存储介质及服务器
CN110446118B (zh) 视频资源预处理方法及装置、视频资源下载方法及装置
CN114302140B (zh) 一种预丢帧方法、系统、设备及计算机可读存储介质
CN113179261B (zh) 视频流处理方法及装置、存储介质和平台服务器
CN112149392A (zh) 一种富文本编辑方法和装置
CN110266814B (zh) 传输方法及传输装置
KR101012206B1 (ko) 웹뷰어의 이미지 전송량 관리 시스템 및 그 방법
CN113596325A (zh) 抓图方法、装置、电子设备及存储介质
CN113472874A (zh) 文件并发传输方法、系统、存储介质及电子设备
CN107566212B (zh) 一种资源监控管理方法和装置
JP4550723B2 (ja) データ編集装置とそのプログラム
CN111726545B (zh) 素材文件处理方法、装置、计算机设备及存储介质
CN112671690B (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
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20220909

Assignee: Chengdu Qingrong Shentong Technology Co.,Ltd.

Assignor: CHINA THREE GORGES Corp.

Contract record no.: X2024980003090

Denomination of invention: A file transfer method and device

Granted publication date: 20221115

License type: Common License

Record date: 20240321

EE01 Entry into force of recordation of patent licensing contract