CN112543214A - 一种文件上传方法、装置、存储介质及设备 - Google Patents
一种文件上传方法、装置、存储介质及设备 Download PDFInfo
- Publication number
- CN112543214A CN112543214A CN201910900494.1A CN201910900494A CN112543214A CN 112543214 A CN112543214 A CN 112543214A CN 201910900494 A CN201910900494 A CN 201910900494A CN 112543214 A CN112543214 A CN 112543214A
- Authority
- CN
- China
- Prior art keywords
- files
- request
- file
- file uploading
- uploading
- 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
- 238000000034 method Methods 0.000 title claims abstract description 67
- 238000004806 packaging method and process Methods 0.000 claims description 14
- 238000010276 construction Methods 0.000 claims description 4
- 238000004891 communication Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 11
- 238000004590 computer program Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 235000010627 Phaseolus vulgaris Nutrition 0.000 description 3
- 244000046052 Phaseolus vulgaris Species 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241000282376 Panthera tigris Species 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
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]
Abstract
本发明实施例提供了一种文件上传方法、装置、存储介质及设备,涉及信息技术领域。本发明实施例通过获取待上传的多个文件;根据所述多个文件生成文件上传请求;其中,所述多个文件以一个封装值的形式位于所述文件上传请求的请求体中,所述多个文件对应的表单位于所述文件上传请求的统一资源定位符地址中;将所述文件上传请求发送至文件服务器。将文件和表单设置在文件上传请求中的不同位置,以通过一次请求实现多文件的快速上传,从而提高文件上传效率。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种文件上传方法、装置、存储介质及设备。
背景技术
Feign是一个声明式的REST(Representational State Transfer,表述性状态转移)客户端,它能够让REST调用更加简单便捷,只需要简单的三步就可以完全的代理一个HTTP(Hyper Text Transport Protocol,超文本传输协议)请求。因此SpringCloud(一系列框架的有序集合)框架将Feign纳入其组件中并且加以完善使得Feign调用更简单化,最后达到如虎添翼的效果。
但是,由于现有的SpringCloud的Feign所使用的编码器不支持多文件上传的编码,而且Feign调用是按照一定步骤串行执行的,中间任一环节出现问题整条链路就会出现问题,从而容易导致通过Feign调用一次请求上传多个文件到文件服务器时出现问题。因此,现有的方案在上传多个文件时,需要进行多次上传,且每次只能上传一个文件,从而使得多文件上传时的文件上传效率较低,耗时较长。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的文件上传方法及装置。
依据本发明的一个方面,提供了一种文件上传方法,包括:
获取待上传的多个文件;
根据所述多个文件生成文件上传请求;其中,所述多个文件以一个封装值的形式位于所述文件上传请求的请求体中,所述多个文件对应的表单位于所述文件上传请求的统一资源定位符地址中;
将所述文件上传请求发送至文件服务器。
可选地,所述根据所述多个文件生成文件上传请求的步骤,包括:
解析用以上传多个文件的源终端中声明的Feign相关注解,并获取与所述Feign相关注解对应的目标方法处理器;
根据所述目标方法处理器构建所述文件上传请求的请求框架;
将所述多个文件以一个封装值的形式放置于所述请求框架的请求体中,将所述多个文件对应的表单放置于所述请求框架的统一资源定位符地址中,得到所述文件上传请求。
可选地,所述将所述多个文件以一个封装值的形式放置于所述请求框架的请求体中,将所述多个文件对应的表单放置于所述请求框架的统一资源定位符地址中,得到所述文件上传请求的步骤,包括:
根据所述多个文件对应的第一关键词,将所述多个文件封装到与所述第一关键词对应的同一值中,得到所述多个文件对应的第一键值对;
针对所述表单中包含的每个信息维度,根据所述信息维度对应的第二关键词,将所述信息维度对应的信息数据设置于所述第二关键词对应的值中,得到每个所述信息维度对应的第二键值对;
将所述第一键值对放置于所述请求框架的请求体中,将所述第二键值对放置于所述请求框架的统一资源定位符地址中,得到所述文件上传请求。
可选地,所述多个文件的数据类型为MultipartFile数组类型;所述表单中包括所述多个文件的补充说明信息和/或相关业务信息;所述统一资源定位符地址包括所述文件服务器的统一资源定位符地址。
可选地,所述根据所述多个文件对应的第一关键词,将所述多个文件封装到与所述第一关键词对应的同一值中,得到所述多个文件对应的第一键值对的步骤,包括:
获取所述多个文件所对应的MultipartFile数组类型的文件数据;
根据所述多个文件对应的第一关键词,将所述文件数据封装到与所述第一关键词对应的同一值中,得到所述多个文件对应的第一键值对。
根据本发明的另一方面,提供了一种文件上传装置,包括:
上传文件获取模块,用于获取待上传的多个文件;
文件上传请求生成模块,用于根据所述多个文件生成文件上传请求;其中,所述多个文件以一个封装值的形式位于所述文件上传请求的请求体中,所述多个文件对应的表单位于所述文件上传请求的统一资源定位符地址中;
文件上传请求发送模块,用于将所述文件上传请求发送至文件服务器。
可选地,所述文件上传请求生成模块,包括:
方法处理器获取子模块,用于解析用以上传多个文件的源终端中声明的Feign相关注解,并获取与所述Feign相关注解对应的目标方法处理器;
请求框架构建子模块,用于根据所述目标方法处理器构建所述文件上传请求的请求框架;
文件上传请求生成子模块,用于将所述多个文件以一个封装值的形式放置于所述请求框架的请求体中,将所述多个文件对应的表单放置于所述请求框架的统一资源定位符地址中,得到所述文件上传请求。
可选地,所述文件上传请求生成子模块,包括:
第一键值对获取单元,用于根据所述多个文件对应的第一关键词,将所述多个文件封装到与所述第一关键词对应的同一值中,得到所述多个文件对应的第一键值对;
第二键值对获取单元,用于针对所述表单中包含的每个信息维度,根据所述信息维度对应的第二关键词,将所述信息维度对应的信息数据设置于所述第二关键词对应的值中,得到每个所述信息维度对应的第二键值对;
文件上传请求生成单元,用于将所述第一键值对放置于所述请求框架的请求体中,将所述第二键值对放置于所述请求框架的统一资源定位符地址中,得到所述文件上传请求。
可选地,所述多个文件的数据类型为MultipartFile数组类型;所述表单中包括所述多个文件的补充说明信息和/或相关业务信息;所述统一资源定位符地址包括所述文件服务器的统一资源定位符地址。
可选地,所述第一键值对获取单元,包括:
文件数据获取子单元,用于获取所述多个文件所对应的MultipartFile数组类型的文件数据;
第一键值对获取子单元,用于根据所述多个文件对应的第一关键词,将所述文件数据封装到与所述第一关键词对应的同一值中,得到所述多个文件对应的第一键值对。
根据本发明的另一方面,提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述的文件上传方法。
根据本发明的另一方面,提供了一种设备,设备包括至少一个处理器、以及与处理器连接的至少一个存储器、总线;其中,所述处理器、所述存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行上述的文件上传方法。
在本发明实施例中,通过获取待上传的多个文件;根据所述多个文件生成文件上传请求;其中,所述多个文件以一个封装值的形式位于所述文件上传请求的请求体中,所述多个文件对应的表单位于所述文件上传请求的统一资源定位符地址中;将所述文件上传请求发送至文件服务器。通过将多个文件封装成一个值的形式设置在文件上传请求的请求体中,同时将多个文件对应的表单设置在文件上传请求的统一资源定位符地址中,以实现通过一次请求将多个文件上传至文件服务器,提高多文件数据的上传速率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例的一种文件上传方法的流程图;
图2示出了本发明实施例的另一种文件上传方法的流程图;
图3示出了本发明实施例的一种文件上传装置的结构框图;
图4示出了本发明实施例的另一种文件上传装置的结构框图;
图5示出了本发明实施例的一种设备的结构框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
实施例一
参照图1,示出了本发明实施例的一种文件上传方法的流程图,具体可以包括如下步骤:
步骤110,获取待上传的多个文件。
在本发明实施例中,用户可以发送包含多个文件的请求至源终端,源终端在接收到多个文件之后,则可以将多个文件上传至相应的文件服务器。
在本发明实施例中,用户可以通过任何可用方式设置待上传的文件,对此本发明实施例不加以限定。例如,用户可以通过网页访问用以上传文件的源终端,并且将待上传的多个文件发送至源客户端,等等。而且,在本发明实施例中,待上传的多个文件中具体可以包含的文件数量可以根据需求进行自定义设置,对此本发明实施例不加以限定。而且,多个文件的存在形式也可以根据需求进行预先设置,对此本发明实施例不加以限定。
步骤120,根据所述多个文件生成文件上传请求;其中,所述多个文件以一个封装值的形式位于所述文件上传请求的请求体中,所述多个文件对应的表单位于所述文件上传请求的统一资源定位符地址中。
如背景技术所述,基于SpringCloud的Feign使用的编码器是使用SpringFormEncoder,其在原生的表单编码器(FormEncoder)上整合了Spring框架的一个编码器,当多个文件上传时(相当于有多个MultipartFile,MultipartFile是SpringMVC封装的一种文件形式),接口需要使用数组或集合进行接收然后转发到Feign客户端,Feign就会使用SpringFormEncoder编码器进行编码后再发送给另一接口,而编码最终是使用SpringFormEncoder的编码方法对请求进行编码,而SpringFormEncoder的编码方法不支持多文件上传的编码,从而导致通过Feign调用一次请求上传多个文件到文件服务器或同时一次请求上传表单+多个文件等情况时出现问题。
那么,为了解决上述的问题,可以将表单和文件都放到请求体中上传,或者将表单和文件放到URL(Uniform Resource Locator,统一资源定位符)地址中上传,但是由于文件是输入流(InputStream),只能放到请求体中进行上传,而表单不是一个输入流,如果将表单和文件都放到请求体中上传,编码器就无法将其编码为一个上传请求。因此,在本发明实施例中,可以将表单放到文件上传请求的URL地址中,而将文件放到文件上传请求的请求体中。具体地,可以基于Feign远程调用,根据多个文件生成文件上传请求;其中,所述多个文件可以一个封装值的形式位于所述文件上传请求的请求体中,所述多个文件对应的表单位于所述文件上传请求的统一资源定位符地址中。其中,封装值的具体格式可以根据需求进行预先设置,对此本发明实施例不加以限定,但是需要保证待上传的全部文件封装为一个值。
在实际应用中,请求中一般可以包括请求行(Request Line)、请求头(RequestHeader)和请求体三个部分。其中,请求行分为三个部分:请求方法、请求地址和协议及版本,以CRLF(rn)结束。因此,在本发明实施例中,可以将多个文件对应的表单设置于文件上传请求的请求行中的URL地址中,具体的可以将表单放置于URL地址的末端,也可以将表单放置于URL地址的起始位置,或者根据需求也可以将表单放置于URL地址内部,具体的可以根据需求进行预先设置,对此本发明实施例不加以限定。多个文件在请求体中的位置以及格式也可以根据需求进行预先设置,对此本发明实施例也不加以限定。
另外,在本发明实施例中,在上传多个文件时,可以设置多个文件对应的表单,那么此时上传的数据为多个文件+表单的形式,则可以将多个文件对应的表单位于所述文件上传请求的统一资源定位符地址中,而如果仅仅是上传多个文件,并未设置相应需要上传的表单,那么此时则无需设置表单的位置。
步骤130,将所述文件上传请求发送至文件服务器。
在基于Feign远程调用生成针对多个文件的文件上传请求之后,则可以进一步将文件上传请求发送至相应的文件服务器。而且,基于基于Feign远程调用的运行流程,在将文件上传请求发送至文件服务器之前,文件上传请求还可以经过Feign远程调用的功能组件日志门面(Logger)和过滤器(Interceptors),然后发送至文件服务器。其中,日志门面和过滤器的具体工作内容可以根据需求进行预先设置,对此本发明实施例不加以限定。
在本发明实施例中,通过获取待上传的多个文件;根据所述多个文件生成文件上传请求;其中,所述多个文件以一个封装值的形式位于所述文件上传请求的请求体中,所述多个文件对应的表单位于所述文件上传请求的统一资源定位符地址中;将所述文件上传请求发送至文件服务器。将文件和表单设置在文件上传请求中的不同位置,以实现通过一次请求实现对多文件的上传,从而提高多文件的上传速率。
实施例二
参照图2,示出了本发明实施例的另一种文件上传方法的流程图,具体可以包括如下步骤:
步骤210,获取待上传的多个文件。
步骤220,解析用以上传多个文件的源终端中声明的Feign相关注解,并获取与所述Feign相关注解对应的目标方法处理器。
如图3所示为现有的一种基于SpringCloud的Feign远程调用流程图。其中,虚线框内的是Feign核心原理流程,框外是SpringCloud原理。终端A和终端B首先向Eureka集群(Eureka Cluster)注册服务,然后可通过Eureka的服务发现去实现终端A通过Feign远程调用终端B。Feign的功能主要组件包括有Contract(协议规则)、MethodHander(方法处理器)、Encoder(编码器)、Decoder(解码器)、Interceptors(过滤器)、Logger(日志门面),各组件各司其职又相互联系,主要工作流程是:用户(User)发送请求给终端A;终端A通过SpringMVCContract协议规范解析终端A中声明的Feign相关的注解;然后找到指定的方法处理器,并通过相应的方法处理器得到Request实体对象(Request Bean);紧接着通过使用编码器(Encoder)基于Request实体对象(Request Bean)转换得到request请求,经过过滤器(Interceptors)和日志门面(Logger)最终达到终端B;当终端B处理完之后返回的响应(response)经由日志门面和过滤器,最后被解码器解析成Response实体对象(ResponseBean),再经过方法处理器和SpringMVCContract协议规范最终转换为目标结果。
而在本发明实施例中,通过Feign远程调用实现文件上传,可以设置上述的终端A为用于实现文件上传的源终端,设置终端B为上传文件的接收方,也即文件服务器。此时,为了提高文件服务器的安全性,可以将Feign远程调用的相关组件设置在源终端,当然根据需求也可以将Feign远程调用的相关组件设置在目标服务器,对此本发明实施例不加以限定。其中,在文件上传过程中,Request实体对象可以理解为待上传的多文件及其对应的表单。
那么,用户可以通过任何可用方式在源终端触发上传需要上传的多个文件,而源终端在获取待上传的多个文件之后,则可以进一步解析用以上传多个文件的源终端中声明的Feign相关注解,并获取与所述Feign相关注解对应的目标方法处理器。
步骤230,根据所述目标方法处理器构建所述文件上传请求的请求框架。
如前述,在实际应用中,如果按照图3所述的Feign远程调用流程进行文件上传容易出问题。因此在本发明实施例中,在生成文件上传请求时,需要对文件和表单进行分别设置,那么则可以先根据目标方法处理器构建文件上传请求的请求框架。
具体地,可以获取构建文件上传请求所需的除多个文件及其对应的表单之外的其他参数,例如请求头、请求方式、请求地址,等等。进而则可以按照文件上传请求的的请求格式,生成相应的请求框架。此时构建得到的请求框架中不包含待上传的多个文件,以及与多个文件对应的表单。其中的请求地址可以包括相应的文件服务器的地址,等等。
其中,请求框架中包含的内容,以及请求框架的格式都属性都可以根据需求进行预先设置,对此本发明实施例不加以限定。
步骤240,将所述多个文件以一个封装值的形式放置于所述请求框架的请求体中,将所述多个文件对应的表单放置于所述请求框架的统一资源定位符地址中,得到所述文件上传请求。
在构建得到文件上传请求的请求框架之后,则可以进一步将多个文件以一个封装值的形式放置于请求框架的请求体中,将多个文件对应的表单放置于请求框架的统一资源定位符地址中,得到所述文件上传请求。
在本发明实施例中,用户也可以根据需求自定义待上传的内容,例如可以仅上传文件,或者仅上传表单,或者同时上传文件和表单,而且其中的表单可以包括与待上传的多个文件对应的表单,也可以包括与待上传的多个文件无关的表单,具体的可以根据需求进行预先设置,对此本发明实施例不加以限定。
而且,如果待上传的内容中包括多个文件,那么则可以将待上传的多个文件以一个封装值的形式放置于所述请求框架的请求体中,如果待上传的内容中包括表单,则可以将相应的表单放置于请求框架的URL地址中,从而得到文件上传请求。
可选地,在本发明实施例中,所述步骤240进一步可以包括:
子步骤241,根据所述多个文件对应的第一关键词,将所述多个文件封装到与所述第一关键词对应的同一值中,得到所述多个文件对应的第一键值对;
子步骤242,针对所述表单中包含的每个信息维度,根据所述信息维度对应的第二关键词,将所述信息维度对应的信息数据设置于所述第二关键词对应的值中,得到每个所述信息维度对应的第二键值对;
子步骤243,将所述第一键值对放置于所述请求框架的请求体中,将所述第二键值对放置于所述请求框架的统一资源定位符地址中,得到所述文件上传请求。
如前述,原来Feign远程调用的编码器只能对单个文件上传和字符信息做编码处理,而在本发明实施例中,为了满足同时上传多个文件的需求,需要能否对多个文件进行编码处理。因此,在本发明实施例中,可以将待上传的多个文件及表单设置为key-value键值对的形式,而且还需要将待上传的全部文件都封装到同一value值中。
因此,在本发明实施例中,可以设置待上传的全部文件对应于一个key值,从而可以将待上传的全部文件封装至相应的key值所对应的同一value值中。具体的,可以根据待上传的全部文件对应的同一个第一关键词,将待上传的全部文件封装到与第一关键词对应的同一值中,得到待上传的多个文件对应的第一键值对。而对于表单而言,由于放置在URL地址中,无需进行封装,因此可以针对表单中包含的每个信息维度,则可以根据每个信息维度对应的第二关键词,将相应信息维度对应的信息数据设置于相应的第二关键词对应的值中,得到每个信息维度对应的第二键值对;进而可以将待上传的多个文件对应的第一键值对放置于请求框架的请求体中,将待上传的表单对应的各个第二键值对放置于请求框架的统一资源定位符地址中,从而得到文件上传请求。
另外,在本发明实施例中,在将第一键值对和第二键值对放入请求框架之前,还可以通过预设的编码方式对第一键值对和/或第二键值对进行编码处理,并将编码后的第一键值对放置于请求框架的请求体中,将编码后的第二键值对放置于请求框架的统一资源定位符地址中,从而得到文件上传请求。其中的编码方式可以根据需求进行预先设置,对此本发明实施例不加以限定。例如,可以利用Feign远程调用原有的编码器对第一键值对和第二键值对进行编码,等等。
可选地,在本发明实施例中,所述多个文件的数据类型为MultipartFile数组类型;所述表单中包括所述多个文件的补充说明信息和/或相关业务信息;所述统一资源定位符地址包括所述文件服务器的统一资源定位符地址。
如前述,本发明实施例是为了实现同时上传多个文件,那么为了方便表征多个文件,可以设置多个文件数据类型为MultipartFile数组类型。其中,MultipartFile是一个框架对文件的封装类型,MultipartFile数组是指由多个MultipartFile组成的一种数据类型。而且,与多个文件对应的表单中可以包括但不限于待上传的每个所述文件的补充说明信息和/或相关业务信息,或者也可以自定义表单包含的内容,等等。补充说明信息和相关业务信息一般是不同与文件的类型,补充说明信息、相关业务信息一般是以表单的形式存在,一般而言而待上传的文件已经在请求体中了,两种不同的截然不同的类型是不能放到请求体中的,所有只能将补充说明信息、相关业务信息放到URL地址中同文件一起上传。
当然,在本发明实施例中,如果需要上传的补充说明信息和/或相关业务信息是以表单之外的其他形式存在,那么也可以以其他的相应形式将补充说明信息和/或相关业务信息放到URL地址中,对此本发明实施例不加以限定。
而且,在实际应用中,为了准确将文件上传请求发送至文件服务器,在文件上传请求中还应包含文件服务器的URL地址,也即在文件上传请求的URL地址中包含相应的文件服务器的URL地址。
可选地,在本发明实施例中,所述子步骤241进一步可以包括:
步骤S1,获取所述多个文件所对应的MultipartFile数组类型的文件数据;
步骤S2,根据所述多个文件对应的第一关键词,将所述文件数据封装到与所述第一关键词对应的同一值中,得到所述多个文件对应的第一键值对。
在本发明实施例中,如果以MultipartFile数组表征多个文件,那么在将多个文件转换为键值对时,可以直接获取多个文件所对应的MultipartFile数组类型的文件数据,进而根据多个文件对应的第一关键词,将相应的文件数据设置到与相应的第一关键词对应的同一值中,得到多个文件对应的第一键值对。
步骤250,将所述文件上传请求发送至文件服务器。
在本发明实施例中,通过解析用以上传多个文件的源终端中声明的Feign相关注解,并获取与所述Feign相关注解对应的目标方法处理器;根据所述目标方法处理器构建所述文件上传请求的请求框架;将所述多个文件以一个封装值的形式放置于所述请求框架的请求体中,将所述多个文件对应的表单放置于所述请求框架的统一资源定位符地址中,得到所述文件上传请求。而且,可以根据所述多个文件对应的第一关键词,将所述多个文件封装到与所述第一关键词对应的同一值中,得到所述多个文件对应的第一键值对;针对所述表单中包含的每个信息维度,根据所述信息维度对应的第二关键词,将所述信息维度对应的信息数据设置于所述第二关键词对应的值中,得到每个所述信息维度对应的第二键值对;将所述第一键值对放置于所述请求框架的请求体中,将所述第二键值对放置于所述请求框架的统一资源定位符地址中,得到所述文件上传请求。并且,获取所述多个文件所对应的MultipartFile数组类型的文件数据;根据所述多个文件对应的第一关键词,将所述文件数据封装到与所述第一关键词对应的同一值中,得到所述多个文件对应的第一键值对。可以将多个文件准确设置于请求体中,同时将表单设置于URL地址中,进而提高多文件上传的有效性,以及多文件上传的效率。
对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
实施例三
参照图3,示出了本发明实施例的一种文件上传装置的结构框图,所述文件上传装置300具体可以包括如下模块:
上传文件获取模块310,用于获取待上传的多个文件。
文件上传请求生成模块320,用于根据所述多个文件生成文件上传请求;其中,所述多个文件以一个封装值的形式位于所述文件上传请求的请求体中,所述多个文件对应的表单位于所述文件上传请求的统一资源定位符地址中。
文件上传请求发送模块330,用于将所述文件上传请求发送至文件服务器。
通过获取待上传的多个文件;根据所述多个文件生成文件上传请求;其中,所述多个文件以一个封装值的形式位于所述文件上传请求的请求体中,所述多个文件对应的表单位于所述文件上传请求的统一资源定位符地址中;将所述文件上传请求发送至文件服务器。将文件和表单设置在文件上传请求中的不同位置,以实现通过一次请求实现多文件上传,从而提高多文件上传效率。
参照图4,示出了本发明实施例的另一种文件上传装置的结构框图。
在图3的基础上,可选的,所述文件上传请求生成模块320,进一步可以包括:
方法处理器获取子模块321,用于解析用以上传多个文件的源终端中声明的Feign相关注解,并获取与所述Feign相关注解对应的目标方法处理器;
请求框架构建子模块322,用于根据所述目标方法处理器构建所述文件上传请求的请求框架;
文件上传请求生成子模块323,用于将所述多个文件以一个封装值的形式放置于所述请求框架的请求体中,将所述多个文件对应的表单放置于所述请求框架的统一资源定位符地址中,得到所述文件上传请求。
可选地,在本发明实施例中,所述文件上传请求生成子模块323,进一步可以包括:
第一键值对获取单元,用于根据所述多个文件对应的第一关键词,将所述多个文件封装到与所述第一关键词对应的同一值中,得到所述多个文件对应的第一键值对;
第二键值对获取单元,用于针对所述表单中包含的每个信息维度,根据所述信息维度对应的第二关键词,将所述信息维度对应的信息数据设置于所述第二关键词对应的值中,得到每个所述信息维度对应的第二键值对;
文件上传请求生成单元,用于将所述第一键值对放置于所述请求框架的请求体中,将所述第二键值对放置于所述请求框架的统一资源定位符地址中,得到所述文件上传请求。
可选地,在本发明实施例中,所述多个文件的数据类型为MultipartFile数组类型;所述表单中包括所述多个文件的补充说明信息和/或相关业务信息;所述统一资源定位符地址包括所述文件服务器的统一资源定位符地址。
可选地,在本发明实施例中,所述第一键值对获取单元,进一步可以包括:
文件数据获取子单元,用于获取所述多个文件所对应的MultipartFile数组类型的文件数据;
第一键值对获取子单元,用于根据所述多个文件对应的第一关键词,将所述文件数据封装到与所述第一关键词对应的同一值中,得到所述多个文件对应的第一键值对。
在本发明实施例中,通过解析用以上传多个文件的源终端中声明的Feign相关注解,并获取与所述Feign相关注解对应的目标方法处理器;根据所述目标方法处理器构建所述文件上传请求的请求框架;将所述多个文件以一个封装值的形式放置于所述请求框架的请求体中,将所述多个文件对应的表单放置于所述请求框架的统一资源定位符地址中,得到所述文件上传请求。而且,可以根据所述多个文件对应的第一关键词,将所述多个文件封装到与所述第一关键词对应的同一值中,得到所述多个文件对应的第一键值对;针对所述表单中包含的每个信息维度,根据所述信息维度对应的第二关键词,将所述信息维度对应的信息数据设置于所述第二关键词对应的值中,得到每个所述信息维度对应的第二键值对;将所述第一键值对放置于所述请求框架的请求体中,将所述第二键值对放置于所述请求框架的统一资源定位符地址中,得到所述文件上传请求。并且,获取所述多个文件所对应的MultipartFile数组类型的文件数据;根据所述多个文件对应的第一关键词,将所述文件数据封装到与所述第一关键词对应的同一值中,得到所述多个文件对应的第一键值对。可以将多个文件准确设置于请求体中,同时将表单设置于URL地址中,进而提高多文件上传的有效性,以及多文件的上传效率。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
所述文件上传装置包括处理器和存储器,上述上传文件获取模块、文件上传请求生成模块、文件上传请求发送模块等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来通过一次请求实现多文件上传。
本发明实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现所述文件上传方法。
本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述文件上传方法。
参照图5,本发明实施例提供了一种设备40,设备包括至少一个处理器401、以及与处理器401连接的至少一个存储器402、总线403;其中,处理器401、存储器402通过总线403完成相互间的通信;处理器401用于调用存储器402中的程序指令,以执行上述的文件上传方法。本文中的设备可以是服务器、PC、PAD、手机等。
本申请是参照根据本申请实施例的方法、设备系统、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
在一个典型的配置中,设备包括一个或多个处理器(CPU)、存储器和总线。设备还可以包括输入/输出接口、网络接口等。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的文件上传方法及装置设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
Claims (10)
1.一种文件上传方法,其特征在于,包括:
获取待上传的多个文件;
根据所述多个文件生成文件上传请求;其中,所述多个文件以一个封装值的形式位于所述文件上传请求的请求体中,所述多个文件对应的表单位于所述文件上传请求的统一资源定位符地址中;
将所述文件上传请求发送至文件服务器。
2.根据权利要求1所述的方法,其特征在于,所述根据所述多个文件生成文件上传请求的步骤,包括:
解析用以上传所述多个文件的源终端中声明的Feign相关注解,并获取与所述Feign相关注解对应的目标方法处理器;
根据所述目标方法处理器构建所述文件上传请求的请求框架;
将所述多个文件以一个封装值的形式放置于所述请求框架的请求体中,将所述多个文件对应的表单放置于所述请求框架的统一资源定位符地址中,得到所述文件上传请求。
3.根据权利要求2所述的方法,其特征在于,所述将所述多个文件以一个封装值的形式放置于所述请求框架的请求体中,将所述多个文件对应的表单放置于所述请求框架的统一资源定位符地址中,得到所述文件上传请求的步骤,包括:
根据所述多个文件对应的第一关键词,将所述多个文件封装到与所述第一关键词对应的同一值中,得到所述多个文件对应的第一键值对;
针对所述表单中包含的每个信息维度,根据所述信息维度对应的第二关键词,将所述信息维度对应的信息数据设置于所述第二关键词对应的值中,得到每个所述信息维度对应的第二键值对;
将所述第一键值对放置于所述请求框架的请求体中,将所述第二键值对放置于所述请求框架的统一资源定位符地址中,得到所述文件上传请求。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述多个文件的数据类型为MultipartFile数组类型;所述表单中包括所述多个文件的补充说明信息和/或相关业务信息;所述统一资源定位符地址包括所述文件服务器的统一资源定位符地址。
5.根据权利要求4所述的方法,其特征在于,所述根据所述多个文件对应的第一关键词,将所述多个文件封装到与所述第一关键词对应的同一值中,得到所述多个文件对应的第一键值对的步骤,包括:
获取所述多个文件所对应的MultipartFile数组类型的文件数据;
根据所述多个文件对应的第一关键词,将所述文件数据封装到与所述第一关键词对应的同一值中,得到所述多个文件对应的第一键值对。
6.一种文件上传装置,其特征在于,包括:
上传文件获取模块,用于获取待上传的多个文件;
文件上传请求生成模块,用于根据所述多个文件生成文件上传请求;其中,所述多个文件以一个封装值的形式位于所述文件上传请求的请求体中,所述多个文件对应的表单位于所述文件上传请求的统一资源定位符地址中;
文件上传请求发送模块,用于将所述文件上传请求发送至文件服务器。
7.根据权利要求6所述的装置,其特征在于,所述文件上传请求生成模块,包括:
方法处理器获取子模块,用于解析用以上传所述多个文件的源终端中声明的Feign相关注解,并获取与所述Feign相关注解对应的目标方法处理器;
请求框架构建子模块,用于根据所述目标方法处理器构建所述文件上传请求的请求框架;
文件上传请求生成子模块,用于将所述多个文件以一个封装值的形式放置于所述请求框架的请求体中,将所述多个文件对应的表单放置于所述请求框架的统一资源定位符地址中,得到所述文件上传请求。
8.根据权利要求7所述的装置,其特征在于,所述文件上传请求生成子模块,包括:
第一键值对获取单元,用于根据所述多个文件对应的第一关键词,将所述多个文件封装到与所述第一关键词对应的同一值中,得到所述多个文件对应的第一键值对;
第二键值对获取单元,用于针对所述表单中包含的每个信息维度,根据所述信息维度对应的第二关键词,将所述信息维度对应的信息数据设置于所述第二关键词对应的值中,得到每个所述信息维度对应的第二键值对;
文件上传请求生成单元,用于将所述第一键值对放置于所述请求框架的请求体中,将所述第二键值对放置于所述请求框架的统一资源定位符地址中,得到所述文件上传请求。
9.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行如权利要求1-5中任一项所述的文件上传方法。
10.一种设备,设备包括至少一个处理器、以及与处理器连接的至少一个存储器、总线;其中,所述处理器、所述存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行如权利要求1-5中任一项所述的文件上传方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910900494.1A CN112543214A (zh) | 2019-09-23 | 2019-09-23 | 一种文件上传方法、装置、存储介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910900494.1A CN112543214A (zh) | 2019-09-23 | 2019-09-23 | 一种文件上传方法、装置、存储介质及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112543214A true CN112543214A (zh) | 2021-03-23 |
Family
ID=75012932
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910900494.1A Pending CN112543214A (zh) | 2019-09-23 | 2019-09-23 | 一种文件上传方法、装置、存储介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112543214A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113783934A (zh) * | 2021-08-11 | 2021-12-10 | 杭州云嘉健康管理有限公司 | 一种智慧监管黑匣子的文件上传方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103595769A (zh) * | 2013-10-29 | 2014-02-19 | 北京奇虎科技有限公司 | Sdk实现文件上传的方法与装置 |
CN103870490A (zh) * | 2012-12-12 | 2014-06-18 | 腾讯科技(武汉)有限公司 | 一种文件上传的方法及装置 |
CN107426256A (zh) * | 2016-05-23 | 2017-12-01 | 中兴通讯股份有限公司 | 一种升级文件的上传方法、终端和服务器 |
-
2019
- 2019-09-23 CN CN201910900494.1A patent/CN112543214A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103870490A (zh) * | 2012-12-12 | 2014-06-18 | 腾讯科技(武汉)有限公司 | 一种文件上传的方法及装置 |
CN103595769A (zh) * | 2013-10-29 | 2014-02-19 | 北京奇虎科技有限公司 | Sdk实现文件上传的方法与装置 |
CN107426256A (zh) * | 2016-05-23 | 2017-12-01 | 中兴通讯股份有限公司 | 一种升级文件的上传方法、终端和服务器 |
Non-Patent Citations (1)
Title |
---|
杨力乙: "基于微信公众平台的交通综合服务系统设计与开发", 中国优秀硕士学位论文全文数据库 (信息科技辑), pages 138 - 661 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113783934A (zh) * | 2021-08-11 | 2021-12-10 | 杭州云嘉健康管理有限公司 | 一种智慧监管黑匣子的文件上传方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9645910B1 (en) | Cross platform mobile HTML debugging | |
US9652364B1 (en) | Cloud service for mobile testing and debugging | |
CN109002362B (zh) | 一种服务方法、装置、系统以及电子设备 | |
CN103942225B (zh) | 一种混合型应用客户端的资源调用方法、客户端及系统 | |
TWI670611B (zh) | 網頁文件發送方法、網頁渲染方法及裝置、網頁渲染系統 | |
JP2019503537A (ja) | ショートリンクを処理する方法及び装置並びにショートリンクサーバ | |
CN106126693B (zh) | 一种网页的相关数据的发送方法及装置 | |
CN103268319A (zh) | 一种基于网页的云浏览器 | |
CN110297944B (zh) | 分布式xml数据处理方法及系统 | |
CN111385316B (zh) | 资源刷新方法、访问方法及装置 | |
CN111026982A (zh) | 智能合约处理方法、计算机设备及存储介质 | |
CN106656920B (zh) | Http服务的处理方法、装置、存储介质及处理器 | |
CN107566477B (zh) | 一种在分布式文件系统集群中获取文件的方法和装置 | |
CN112615759B (zh) | 全链路压测组件、全链路压测方法及装置 | |
CN108363588B (zh) | 实现web与原生功能交互的方法、电子装置及可读存储介质 | |
CN103258056B (zh) | 处理风格样式表的方法、服务器、客户端和系统 | |
US20160308974A1 (en) | System and method for backend control of frontend user interfaces | |
CN112416964A (zh) | 一种数据处理的方法、装置、系统、计算机设备及计算机可读存储介质 | |
CN113612686A (zh) | 流量调度方法、装置及电子设备 | |
CN105022619A (zh) | 一种代码数据处理方法及装置 | |
CN109062906B (zh) | 程序语言资源的翻译方法及装置 | |
CN108182119B (zh) | 读写分离控制方法和装置、存储介质及电子装置 | |
CN107040613B (zh) | 一种报文传输方法及系统 | |
CN108021594B (zh) | 一种网页展示方法、装置及系统 | |
CN104954363A (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 |