CN116185472A - 一种文件打包方法、装置、计算机设备和存储介质 - Google Patents
一种文件打包方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN116185472A CN116185472A CN202211563037.6A CN202211563037A CN116185472A CN 116185472 A CN116185472 A CN 116185472A CN 202211563037 A CN202211563037 A CN 202211563037A CN 116185472 A CN116185472 A CN 116185472A
- Authority
- CN
- China
- Prior art keywords
- file
- tree
- information
- directory
- metadata
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1744—Redundancy elimination performed by the file system using compression, e.g. sparse files
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Human Computer Interaction (AREA)
- Information Transfer Between Computers (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及文件打包领域,提供了一种文件打包方法、装置、计算机设备和存储介质。所述方法包括:加载目标代码;所述目标代码用于将网页的多个静态资源打包成目标格式文件;通过所述目标代码遍历所述网页的多个静态资源的目录,得到每个所述静态资源的文件树信息;其中文件树信息包括具有目录树信息的元数据;根据所述元数据的大小以及所述文件树信息确定所述目标格式文件的文件头;遍历所述文件树信息,根据所述文件树信息填充所述目标格式文件的文件名集合、文件树集合和文件内容集合。采用本方法能够降低网页的静态资源的安全风险。
Description
技术领域
本申请涉及网页静态资源技术领域,特别是涉及一种文件打包方法、装置、计算机设备和存储介质。
背景技术
随着互联网技术的发展,越来越多的用户使用互联网技术浏览网页,生成网页(web)的静态资源。目前,对于网页的静态资源的打包方法,一般将静态资源打包进文件***内的指定目录,在***启动后,将指定目录挂载到根文件***上,并修改文件目录给予最小访问权限。web服务依靠文件***提供静态资源的访问与管理。然而,该方法存在目录遍历攻击的可能,对网页的静态资源存在较大的安全风险。
发明内容
基于此,有必要针对上述技术问题,提供一种能够降低网页的静态资源的安全风险的文件打包方法、装置、计算机设备和存储介质。
一种文件打包方法,所述方法包括:
加载目标代码;所述目标代码用于将网页的多个静态资源打包成目标格式文件;
通过所述目标代码遍历所述网页的多个静态资源的目录,得到每个所述静态资源的文件树信息;所述文件树信息包括目录树信息;
根据所述元数据的大小以及所述文件树信息确定所述目标格式文件的文件头;
遍历所述文件树信息,根据所述文件树信息填充所述目标格式文件的文件名集合、文件树集合和文件内容集合。
在其中一个实施例中,所述根据所述文件树信息填充所述目标格式文件的文件名集合、文件树集合和文件内容集合包括:
根据所述文件树信息中的目录树信息以及各所述元数据对应的位置信息填充所述目标格式文件的文件树集合;
根据所述元数据对应的文件名偏移地址填充所述目标格式文件的文件名集合;
根据所述文件树信息的文件位置信息和文件大小信息填充所述目标格式文件的文件内容集合。
在其中一个实施例中,所述根据所述文件树信息中的目录树信息以及各元数据对应的位置信息填充所述目标格式文件的文件树集合包括:
将所述目录树信息按照元数据对应的文件名的逻辑命名顺序进行排序得到目录树集合;所述目录树集合包括按序排列的元数据;
从所述文件树信息中确定每个所述元数据对应的位置信息;
将所述位置信息和所述目录树集合进行拼接得到文件树集合。
在其中一个实施例中,所述目录树信息包括根目录;所述将所述目录树信息按照元数据对应的文件名逻辑命名顺序进行排序得到目录树集合包括:
根据所述根目录对应的文件名的逻辑命名顺序对所述文件树信息进行排序,得到根目录文件树集合;
从所述根目录中筛选具有子节点的根目录作为目标根目录;
将每个所述目标根目录的子节点按所述子节点对应的文件名的逻辑命名顺序进行排序,得到每个所述目标根目录对应的子节点文件树集合;
将各个所述子节点文件树集合拼接到各自对应的目标根目录的目录文件树下,得到目录树集合。
在其中一个实施例中,所述方法还包括:
获取所述静态资源的所述文件头的文件格式名称;
当所述文件格式名称为预设文件格式名称时,将所述静态资源进行压缩并更新所述文件树集合中的压缩字段信息。
在其中一个实施例中,所述根据所述文件树信息的文件位置信息和文件大小信息确定所述目标格式文件的文件内容集合包括:
从所述静态资源的文件树信息中获取每个所述元数据的文件位置信息和文件大小信息;
根据每个所述元数据的文件位置信息确定所述静态资源的文件内容相对文件头的偏移量;
根据所述偏移量确定各所述元数据对应的填充顺序,并将各所述元数据的文件位置信息和文件大小信息按照所述填充顺序进行填充,得到所述目标格式文件的文件内容集合。
一种文件打包装置,所述装置包括:
代码加载模块,用于加载目标代码;所述目标代码用于将网页的多个静态资源打包成目标格式文件;
文件树信息获取模块,用于通过所述目标代码遍历所述网页的多个静态资源的目录,得到每个所述静态资源的文件树信息;所述文件树信息包括目录树信息;
文件头生成模块,用于根据所述元数据的大小以及所述文件树信息确定所述目标格式文件的文件头;
目标格式文件填充模块,用于遍历所述文件树信息,根据所述文件树信息填充所述目标格式文件的文件名集合、文件树集合和文件内容集合。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述文件打包方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述文件打包方法的步骤。
上述文件打包方法、装置、计算机设备和存储介质,通过加载目标代码,调用目标代码遍历网页的多个静态资源的目录,进而得到每个静态资源的文件树信息,其中文件树信息包括具有目录树信息的元数据;然后根据元数据的大小和文件树信息共同确定目标格式文件的文件头;并根据文件数信息填充目标格式文件的文件名集合、文件树集合和文件内容集合,以此得到打包后的目标格式文件。通过本方案提供的文件打包方法,通过目标格式文件对web的静态资源进行打包,并为web服务提供静态资源的访问与管理,避免了将目录挂载到根文件***上,隔绝了目录遍历攻击的可能。
附图说明
图1为一个实施例中文件打包方法的流程示意图;
图2为一个实施例中文件打包方法的文件树集合的格式排布示意图;
图3为一个实施例中文件打包方法的文件树集合的示意图;
图4为一个实施例中文件打包方法的文件树集合中元数据fname_offset与文件名集合的映射关系;
图5为一个实施例中文件打包方法的文件树集合中的元数据fcontent_offset与文件内容集合的映射关系;
图6为一个实施例中文件打包方法的目标格式文件的示意图;
图7为一个实施例中文件打包装置的结构框图;
图8为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1所示,提供了一种文件打包方法,该文件打包***可以包括终端或服务器。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。以该方法应用于服务器为例进行说明,包括以下步骤:
步骤S102,加载目标代码;目标代码用于将网页的多个静态资源打包成目标格式文件。
其中,目标代码是用于将网页的多个静态资源打包成目标格式文件的代码。目标格式文件是一种web专用的格式文件,该目标格式文件是将web静态资源打包后的文件;该目标格式可以是webfs,存储使用网络序,即大端序进行存储,该目标格式的文件可以是只读的文件***。
具体地,目标格式文件包括文件头、文件树集合、文件名集合和文件内容集合。
步骤S104,通过目标代码遍历网页的多个静态资源的目录,得到每个静态资源的文件树信息;文件树信息包括具有目录树信息的元数据。
其中,文件树信息包括静态资源对应的元数据,用于描述一个文件的特征的***数据。文件树信息记录了文件权限、文件名称的位置信息、文件内容的位置信息,其中这里的文件包括文件夹。文件树信息包括具有目录树信息的元数据,目录树信息包括根目录和子节点。目录树信息一定包括根目录,但是根目录并不一定具有子节点。
通过调用目标代码,遍历网页的多个静态资源的目录,该目录可以是root目录,以此得到每个静态资源的文件树信息;然后将文件树信息中的元数据,按照目录树信息进行填充,得到具有根目录和子节点的元数据。
步骤S106,根据元数据的大小以及文件树信息确定目标格式文件的文件头。
其中,文件头记录了文件格式名称、文件版本信息,元数据大小和文件校验码。其中,文件格式名称用于识别静态资源的文件格式,比如目标格式文件的文件格式为“webfs”。文件版本信息是指文件格式的版本号,可以支持1至255,比如目标格式文件的版本号为1。文件校验码用于校验目标格式文件的文件数据是否正确,比如校验文件树集合(file tree set),元数据大小(tree_count)等等。文件校验码可以是采用crc32校验码。表1示出了文件头的各个字段、以及对应字段的长度和字段含义,具体如下表所示:
表1目标格式文件的文件头
步骤S108,遍历文件树信息,根据文件树信息填充目标格式文件的文件名集合、文件树集合和文件内容集合。
在一个实施例中,根据文件树信息填充目标格式文件的文件名集合、文件树集合和文件内容集合包括:根据元数据对应的文件名偏移地址填充目标格式文件的文件名集合;根据所述文件树信息中的目录树信息以及各所述元数据对应的位置信息填充所述目标格式文件的文件树集合;根据文件树信息的文件位置信息和文件大小信息填充目标格式文件的文件内容集合。
在一个实施例中,根据所述文件树信息中的目录树信息以及各元数据对应的位置信息填充所述目标格式文件的文件树集合包括:将目录树信息按照元数据对应的文件名进行排序得到目录树集合;目录树集合包括按序排列的元数据;从文件树信息中确定每个元数据对应的位置信息;将位置信息和目录树集合进行拼接得到文件树集合。
在一个实施例中,目录树信息包括根目录;将目录树信息按照元数据对应的文件名的逻辑命名顺序进行排序得到目录树集合包括:根据根目录对应的文件名的逻辑命名顺序对文件树信息进行排序,得到根目录文件树集合;从根目录中筛选具有子节点的根目录作为目标根目录;将每个目标根目录的子节点按子节点对应的文件名的逻辑命名顺序进行排序,得到对应每个所述目标根目录的子节点文件树集合;将各个所述子节点文件树集合拼接到各自对应的目标根目录的目录文件树下,得到目录树集合。
其中,文件树集合包括目标格式文件的元数据,数据格式是固定的40Byte。文件树集合用于描述一个文件的特征的***数据,对于web的静态资源,由于web只需要区分文件夹和普通文件,文件树集合记录了文件权限、文件名称的位置信息和文件内容的位置信息;或者文件夹权限、文件夹名称的位置信息和文件夹内容的位置信息;文件树集合记录了文件或文件夹的相关信息。
具体地,服务器根据元数据对应的文件名偏移地址来填充目标格式文件的文件名集合,并在相邻的两个元数据之间采用分割符来区分各个不同的文件名,同时在文件名集合的开始采用特殊符号作为文件名集合的开端。例如,文件名集合为:/,a,b,c,d,1.js,e,eeee.html,分割符为“,”;并且以“/”作为文件名集合的开端。
根据文件树信息填充目标格式文件的文件树集合包括:将文件树信息中的目录树信息按照对应的文件名进行排序得到目录树集合,这里可以是按照从小到大或从大到小的顺序排序;然后从文件树信息中确定每个元数据对应目录树集合中各字段的位置信息;进而将位置信息和目录树集合拼接得到文件树集合。
服务器将目录树信息按照元数据对应的文件名进行排序得到目录树集合;然后从文件树信息中确定出每个元数据对应的位置信息,其中位置信息可以是元数据对应的多个字段信息组合形成的;然后将位置信息放置在目录树集合的前面,以此拼接得到文件树集合。当然,在一个实施例中,也可以将位置信息放置在目录树集合的后面,以此拼接得到文件树集合。在一个实施例中,也可以将位置信息放置在目录树集合的中间任一位置,以此拼接得到文件树集合。这里对拼接方式不做限定,只需要文件树集合包含位置信息和目录树信息即可。
目录树信息包括根目录和子节点,其中根目录不一定都包含子节点。有些根目录有子节点,有些根目录没有子节点。首先,筛选出根目录的文件名,基于根目录的文件名按照从大到小或从小到大的顺序进行排序,以此实现对文件树信息进行排序,得到根目录文件树集合;然后从根目录中筛选具有子节点的一个或多个根目录,作为目标根目录;进而将每个目标根目录的子节点,按照子节点的文件名进行排序,比如某个目标根目录下具有多个子节点,基于子节点的文件名按照从大到小或者从小到大的顺序进行排序,得到对应该目标根目录的子节点文件树集合;相应的,对于多个目标根目录的子节点,按照每个目标根目录的子节点的文件名进行排序,以此得到每个目标根目录对应的子节点文件树集合;最后,将将根目录文件树集合与子节点文件树集合进行拼接,得到目录树集合。其中,拼接方法包括:确定根目录文件树集合中具有子节点的根目录,作为目标根目录;将每个目标根目录对应的子节点文件树集合***对应的根目录后面进行拼接,得到目录树集合。这里对目录树集合进行排序,是为了便于后续快速从文件树集合中查找对应的文件。
在一个实施例中,文件查找方法包括:初始化web服务器,加载并解析目标格式文件,得到目标格式文件中的文件树集合,将文件树集合存储至软表中;接收URL请求并分析需要请求的目标文件数据,从文件树集合中采用二分法获取对应的目标文件数据。
在一个实施例中,从文件树集合中采用二分法获取对应的目标文件数据包括:从文件树集合中确定所述目标文件数据所在的根目录的目录表项,将所述目录表项作为当前目录表项;将所述目标文件数据对应的文件名与所述当前目录表项的中间值进行比较,若大于所述当前目标表项的中间值,则将位于所述当前目录表项的中间值及其后面的目录作为当前目录表项;若小于所述目录表项的中间值,则将位于所述目标表项的中间值及其前面的目录作为当前目录表项;返回将所述目标文件数据对应的文件名与所述当前目录表项的中间值进行比较的步骤,直至查找到目标文件数据。其中,目录表项包括按序排列的多个根目录对应的文件名。
比如需要查找的目标文件数据是e/eeee.html,首先确定要查找的目录的名称为e,相应的根目录下包括a、b、c、d、e,5个目录表项,将这些目录表项作为当前目录表项,将e和c进行比较,发现c大,因此在c,d,e中查找;进一步,将e和d进行比较,发现e比d大,因此查找到e;进而根据e的属性判定e是根目录,再查找e目录下的子节点,而e目录下只有一个字节点,且该资节点的文件名为eeee.html,查找结束。
例如,参考图2,图2示出了一个实施例中文件树集合的格式排布示意图。图2中的根目录下有3个普通文件a、b、c,对应的文件名是A,B,C;两个具有子节点的根目录d、e,也可以称为个目录;d目录下有一个1.js文件,文件名为D1,E目录下有一个eeee.html文件,对应的文件名为E1,即对应有7个元数据,即a,b,c,d,e,1.js,eeee.html。首先以根目录a,b,c,d,e的文件名的逻辑命名顺序按照从小到大进行排序,排序后的元数据为a,b,c,d,e;然后筛选出具有子节点的根目录d,e;进一步将每个根目录的子节点按照子节点对应的文件名按照从小到大的顺序排序,即d目录下的子节点排序后为1.js;e目录下的子节点排序后为eeee.html;再将d目录和e目录下的排序后的子节点拼接到各自对应的根目录下,并在起始位置添加特殊符号“/”,即得到排序的元数据:/,a,b,c,d,1.js,e,eeee.html。最后,获取每个元数据对应的各个字段的位置信息,并将位置信息与排序后的目录树信息进行拼接,得到最终的文件树集合,如图3所示。
参考图3,图3是出了一个文件树集合的示意图,该文件树集合包括目录树集合和位置信息。其中,目录树集合包括图2中的第二行至最后一行数据;位置信息为第一行数据。位置信息包括元数据对应的各个字段信息。字段信息包括:区分文件和文件夹的字段、是否被压缩的字段、是否有读权限的字段、以及是否有写权限的字段等。比如元数据为:/,a,b,c,d,1.js,e,eeee.html;根据每个元数据的特征,如果a元数据是文件夹,则相应的isfile为0。图3中的File_info是表2中的前6个字段的总称,即表征文件信息的字段。文件树集合中包括多种字段,各个字段的介绍可以参考表2中所示。表2中示出各个字段,以及各字段对应的长度和含义。文件树集合中各个字段的介绍,如下表2所示:
在一个实施例中,根据元数据对应的文件名偏移地址填充目标格式文件的文件名集合。
文件名集合是由文件树集合中的fname_offset分区所记录的对应元数据的文件名的偏移地址,偏移地址是相对文件头的偏移地址。可以根据各元数据及对应的偏移地址得到各元数据对应的文件名,并利用分割符对各元数据对应的文件名进行分割,从而得到文件名集合。其中分隔符可以是“,”“;”;在此不做限定,只要能区分相邻的文件名就可以。
单独将文件名集合划分一个区域是因为文件的文件名有长有短,因此将文件名都放在一起节约空间。文件名集合的排序可以参考图4,图4示出了文件树集合中元数据fname_offset与文件名集合的映射关系。
从图4中可以看出,将文件树信息中元数据对应的文件名的偏移地址的字段fname_offset映射到文件名集合中,并且文件名集合中以“\0”作为数据与数据之间的分割符,格式为:“dirnme\0filename1\0filename2\0dir1name\0…”。比如,图3中的文件树集合中的“/元数据”映射到文件名集合中为“/\”,“a元数据”映射为“a”,“c元数据”映射为“c”,以此类推,得到文件名集合为:“/\0a\0b\0c\0d\0e\01.js\0eeee.html\0”。
在一个实施例中,根据文件树信息的文件位置信息和文件大小信息确定目标格式文件的文件内容集合包括:从静态资源的文件树信息中获取每个元数据的文件位置信息和文件大小信息;根据每个元数据的文件位置信息确定静态资源的文件内容相对文件头的偏移量;根据所述偏移量确定各所述元数据对应的填充顺序,并将各所述元数据的文件位置信息和文件大小信息按照所述填充顺序进行填充,得到所述目标格式文件的文件内容集合。
在一个实施例中,方法还包括:获取静态资源的文件头的文件格式名称;当文件格式名称为预设文件格式名称时,将静态资源进行压缩并更新文件树集合中的压缩字段信息。
具体地,文件内容集合即为文件内容的集合,格式如:“content1content2…”,文件内容的位置和大小由元数据对应的字段fcontent_offset和fsize确定。字段fcontent_offset记录了文件内容相对文件头的偏移量,即文件的位置信息。字段fsize记录了文件的大小。当文件格式为预设文件格式名称时,比如html,js,css格式的文件,该文件需要进行gzip压缩操作。由于一些静态资源文件较大,需要gzip压缩后传输,因此目标代码可以先对这类预设文件格式名称的文件进行压缩操作,通过自带的压缩操作,简化了上层处理,也节省了带宽。
如图5所示,示出了文件树集合中的元数据fcontent_offset与文件内容集合的映射关系。从图中可以看出,对于根目录下的a元数据、b元数据、c元数据,映射到文件内容集合中为根目录的文件名:a_fcontent、b_fcontent、c_fcontent;而对于具有子节点的根目录下的d元数据和e元数据,映射到文件内容集合中为子节点对应的文件名:1.js_fcontent、eeee.html_fcontent。
如图6所示,示出了最终形成的目标格式文件的示意图。图中可以看出,目标格式文件包括文件头,文件树集合,文件名集合(图中name set)以及文件内容集合(图中content set)。图6中第一行0~31bit的数据,是文件头前4个字节数据展开后的具体字段。
上述文件打包方法中,通过加载目标代码,调用目标代码遍历网页的多个静态资源的目录,进而得到每个静态资源的文件树信息,其中文件树信息包括具有目录树信息的元数据;然后根据元数据的大小和文件树信息共同确定目标格式文件的文件头;并根据文件树信息填充目标格式文件的文件名集合、文件树集合和文件内容集合,以此得到打包后的目标格式文件。通过本方案提供的文件打包方法,通过目标格式文件对web的静态资源进行打包,并为web服务提供静态资源的访问与管理,避免了将目录挂载到根文件***上,隔绝了目录遍历攻击的可能。而且该方法不依赖文件***,自身就是一种文件***,可以应用于不支持文件***的设备;而且自带权限管理,对于特定格式需要压缩的文件,可以通过目标代码进行压缩,不需要额外采用其他压缩软件来压缩。
应该理解的是,虽然图1-6的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-6中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图7所示,提供了一种文件打包装置700,包括:代码加载模块702、文件树信息获取模块704、文件头生成模块706和目标格式文件填充模块708,其中:
代码加载模块702,用于加载目标代码;目标代码用于将网页的多个静态资源打包成目标格式文件。
文件树信息获取模块704,用于通过目标代码遍历网页的多个静态资源的目录,得到每个静态资源的文件树信息;文件树信息包括目录树信息。
文件头生成模块706,用于根据元数据的大小以及文件树信息确定目标格式文件的文件头。
目标格式文件填充模块708,用于遍历文件树信息,根据文件树信息填充目标格式文件的文件名集合、文件树集合和文件内容集合。
在一个实施例中,目标格式文件填充模块还用于根据元数据对应的文件名偏移地址填充目标格式文件的文件名集合;根据所述文件树信息中的目录树信息以及各所述元数据对应的位置信息填充所述目标格式文件的文件树集合;根据文件树信息的文件位置信息和文件大小信息填充目标格式文件的文件内容集合。
在一个实施例中,目标格式文件填充模块还用于将所述目录树信息按照元数据对应的文件名的逻辑命名顺序进行排序得到目录树集合;所述目录树集合包括按序排列的元数据;从文件树信息中确定每个元数据对应的位置信息;将位置信息和目录树集合进行拼接得到文件树集合。
在一个实施例中,目标格式文件填充模块还用于根据所述根目录对应的文件名的逻辑命名顺序对所述文件树信息进行排序,得到根目录文件树集合;从所述根目录中筛选具有子节点的根目录作为目标根目录;将每个所述目标根目录的子节点按所述子节点对应的文件名的逻辑命名顺序进行排序,得到每个所述目标根目录对应的子节点文件树集合;将各个所述子节点文件树集合拼接到各自对应的目标根目录的目录文件树下,得到目录树集合。
在一个实施例中,装置还包括压缩模块,用于获取静态资源的文件头的文件格式名称;当文件格式名称为预设文件格式名称时,将静态资源进行压缩并更新文件树集合中的压缩字段信息。
在一个实施例中,目标格式文件填充模块还用于从静态资源的文件树信息中获取每个元数据的文件位置信息和文件大小信息;根据每个元数据的文件位置信息确定静态资源的文件内容相对文件头的偏移量;根据所述偏移量确定各所述元数据对应的填充顺序,并将各所述元数据的文件位置信息和文件大小信息按照所述填充顺序进行填充,得到所述目标格式文件的文件内容集合。
上述实施例中,通过加载目标代码,调用目标代码遍历网页的多个静态资源的目录,进而得到每个静态资源的文件树信息,其中文件树信息包括具有目录树信息的元数据;然后根据元数据的大小和文件树信息共同确定目标格式文件的文件头;并根据文件数信息填充目标格式文件的文件名集合、文件树集合和文件内容集合,以此得到打包后的目标格式文件。通过本方案提供的文件打包方法,通过目标格式文件对web的静态资源进行打包,并为web服务提供静态资源的访问与管理,避免了将目录挂载到根文件***上,隔绝了目录遍历攻击的可能。而且该方法不依赖文件***,自身就是一种文件***,可以应用于不支持文件***的设备;而且自带权限管理,对于特定格式需要压缩的文件,可以通过目标代码进行压缩,不需要额外采用其他压缩软件来压缩。
关于文件打包装置的具体限定可以参见上文中对于文件打包方法的限定,在此不再赘述。上述文件打包装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图8所示。该计算机设备包括通过***总线连接的处理器、存储器、网络接口和树据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***、计算机程序和树据库。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的树据库用于存储文件打包树据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种文件打包方法。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,其特征在于,处理器执行计算机程序时实现本申请任意一个实施例中提供的文件打包方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现本申请任意一个实施例中提供的文件打包方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、树据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双树据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种文件打包方法,其特征在于,所述方法包括:
加载目标代码;所述目标代码用于将网页的多个静态资源打包成目标格式文件;
通过所述目标代码遍历所述网页的多个静态资源的目录,得到每个所述静态资源的文件树信息;所述文件树信息包括具有目录树信息的元数据;
根据所述元数据的大小以及所述文件树信息确定所述目标格式文件的文件头;
遍历所述文件树信息,根据所述文件树信息填充所述目标格式文件的文件树集合、文件名集合和文件内容集合。
2.根据权利要求1所述的方法,其特征在于,所述根据所述文件树信息填充所述目标格式文件的文件名集合、文件树集合和文件内容集合包括:
根据所述文件树信息中的目录树信息以及各所述元数据对应的位置信息填充所述目标格式文件的文件树集合;
根据所述元数据对应的文件名偏移地址填充所述目标格式文件的文件名集合;
根据所述文件树信息的文件位置信息和文件大小信息填充所述目标格式文件的文件内容集合。
3.根据权利要求2所述的方法,其特征在于,所述根据所述文件树信息中的目录树信息以及各元数据对应的位置信息填充所述目标格式文件的文件树集合包括:
将所述目录树信息按照元数据对应的文件名的逻辑命名顺序进行排序得到目录树集合;所述目录树集合包括按序排列的元数据;
从所述文件树信息中确定每个所述元数据对应的位置信息;
将所述位置信息和所述目录树集合进行拼接得到文件树集合。
4.根据权利要求3所述的方法,其特征在于,所述目录树信息包括根目录;所述将所述目录树信息按照元数据对应的文件名逻辑命名顺序进行排序得到目录树集合包括:
根据所述根目录对应的文件名的逻辑命名顺序对所述文件树信息进行排序,得到根目录文件树集合;
从所述根目录中筛选具有子节点的根目录作为目标根目录;
将每个所述目标根目录的子节点按所述子节点对应的文件名的逻辑命名顺序进行排序,得到每个所述目标根目录对应的子节点文件树集合;
将各个所述子节点文件树集合拼接到各自对应的目标根目录的目录文件树下,得到目录树集合。
5.根据权利要求2所述的方法,其特征在于,所述方法还包括:
获取所述静态资源的所述文件头的文件格式名称;
当所述文件格式名称为预设文件格式名称时,将所述静态资源进行压缩并更新所述文件树集合中的压缩字段信息。
6.根据权利要求2所述的方法,其特征在于,所述根据所述文件树信息的文件位置信息和文件大小信息确定所述目标格式文件的文件内容集合包括:
从所述静态资源的文件树信息中获取每个所述元数据的文件位置信息和文件大小信息;
根据每个所述元数据的文件位置信息确定所述静态资源的文件内容相对文件头的偏移量;
根据所述偏移量确定各所述元数据对应的填充顺序,并将各所述元数据的文件位置信息和文件大小信息按照所述填充顺序进行填充,得到所述目标格式文件的文件内容集合。
7.根据权利要求1至6任意一项所述的方法,其特征在于,所述文件头包括文件格式名称、文件版本信息、元数据大小和文件校验码。
8.一种文件打包装置,其特征在于,所述装置包括:
代码加载模块,用于加载目标代码;所述目标代码用于将网页的多个静态资源打包成目标格式文件;
文件树信息获取模块,用于通过所述目标代码遍历所述网页的多个静态资源的目录,得到每个所述静态资源的文件树信息;所述文件树信息包括目录树信息;
文件头生成模块,用于根据所述元数据的大小以及所述文件树信息确定所述目标格式文件的文件头;
目标格式文件填充模块,用于遍历所述文件树信息,根据所述文件树信息填充所述目标格式文件的文件名集合、文件树集合和文件内容集合。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211563037.6A CN116185472A (zh) | 2022-12-07 | 2022-12-07 | 一种文件打包方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211563037.6A CN116185472A (zh) | 2022-12-07 | 2022-12-07 | 一种文件打包方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116185472A true CN116185472A (zh) | 2023-05-30 |
Family
ID=86439167
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211563037.6A Pending CN116185472A (zh) | 2022-12-07 | 2022-12-07 | 一种文件打包方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116185472A (zh) |
-
2022
- 2022-12-07 CN CN202211563037.6A patent/CN116185472A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110069449B (zh) | 文件处理方法、装置、计算机设备和存储介质 | |
US11010257B2 (en) | Memory efficient perfect hashing for large records | |
CN101777056B (zh) | 数据存储方法及设备 | |
US8099421B2 (en) | File system, and method for storing and searching for file by the same | |
US20070271249A1 (en) | Heterogeneous multi-level extendable indexing for general purpose annotation systems | |
CN111399756A (zh) | 一种数据存储方法、数据下载方法及装置 | |
CN105677904A (zh) | 基于分布式文件***的小文件存储方法及装置 | |
CN104348859A (zh) | 文件同步方法、装置、服务器、终端及*** | |
US20100268736A1 (en) | Efficient creation, storage, and provision of web-viewable documents | |
US20110153677A1 (en) | Apparatus and method for managing index information of high-dimensional data | |
US6980994B2 (en) | Method, apparatus and computer program product for mapping file handles | |
CN112100134A (zh) | 导出大文件的方法及装置、存储介质及计算机设备 | |
CN111367857A (zh) | 数据存储方法、装置、ftp服务器及存储介质 | |
CN110196841B (zh) | 文件的存储方法和装置、查询方法和装置及服务器 | |
CN104361007A (zh) | 浏览器及其收藏夹的处理方法 | |
CN101655796A (zh) | 基于Web的可扩展帮助***及其实现方法 | |
CN110955855A (zh) | 一种信息拦截的方法、装置及终端 | |
CN107704464B (zh) | 解析静态资源的路径的方法及装置 | |
CN116185472A (zh) | 一种文件打包方法、装置、计算机设备和存储介质 | |
US8495025B2 (en) | Foldering by stable query | |
CN111309677A (zh) | 一种分布式文件***的文件管理方法及装置 | |
CN107122433B (zh) | 一种复合文档的合并方法及实现该方法的*** | |
CN116108300A (zh) | Web页面加载方法、装置、计算机设备和存储介质 | |
CN115269511A (zh) | 一种泛电子文件封装方法及装置 | |
CN114610973A (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 |