CN111399769B - 一种mime格式上传文件的存储方法及装置 - Google Patents
一种mime格式上传文件的存储方法及装置 Download PDFInfo
- Publication number
- CN111399769B CN111399769B CN202010118522.7A CN202010118522A CN111399769B CN 111399769 B CN111399769 B CN 111399769B CN 202010118522 A CN202010118522 A CN 202010118522A CN 111399769 B CN111399769 B CN 111399769B
- Authority
- CN
- China
- Prior art keywords
- data
- mime
- content
- file
- disk
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及上传文件存储技术领域,公开了一种MIME格式上传文件的存储方法、装置以及计算机存储介质,其中,方法包括以下步骤:识别并上传MIME格式的数据包,申请内存块用于数据包缓存;将数据包中设定字节的数据缓存至内存块,解析首次缓存数据,并将首次缓存数据中除MIME格式信息外的内容数据写入磁盘;继续对数据包中数据进行缓存,每缓存设定字节的数据后将缓存数据写入磁盘;判断剩余未缓存数据是否大于设定字节,如果大于,则转上一步;否则将剩余数据缓存至内存块,解析末次缓存数据,并将末次缓存数据中除MIME格式信息外的内容数据写入磁盘。本发明存储逻辑简单,存储时磁盘IO不需要频繁写入,存储时性能消耗小。
Description
技术领域
本发明涉及上传文件存储技术领域,具体涉及一种MIME格式上传文件的存储方法、装置以及计算机存储介质。
背景技术
在最初的http协议中,没有上传文件方面的功能。rfc1867协议,如Microsoft IE、Mozila、Opera等,按照此规范将用户指定的文件发送到服务器。服务器端的网页程序,如php、asp、jsp等,可以按照此规范,解析出用户发送来的文件。Microsoft IE、Mozila、Opera已经支持此协议,在网页中使用一个特殊的form就可以发送文件。绝大部分http服务器,包括tomcat,已经支持此协议,可接受发送来的文件。各种网页程序,如php、asp、jsp中,对于上传文件已经做了很好的封装。
MIME(Multipurpose Internet Mail Extensions)为多用途互联网邮件扩展类型,是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。它是一个互联网标准,扩展了电子邮件标准。目前,采用MIME格式上传文件的存储方法,实现过程如下:
1、识别并上传MIME格式的数据包。
2、对数据包进行逐行解析,获取文件名(filename)、上传的数据总长度(Content-Length)、边界值(boundary)等字段。
3、按行存储文件内容,把文件内容写入磁盘。
上述针对MIME格式上传文件的存储方法存在一些缺陷,具体如下:
1、按行解析,如果特征分包时,需要把当前行缓存起来,等到新的数据包来的时候,拼接到一起进行解析,存储逻辑复杂,消耗性能。
例如获取文件名test.txt的需要两个特征,开始特征filename=“,结束特征”\r\n,当文件名,当filename分在两个数据包中时,首先把file所在的一行数据缓存起来,然后等到下一个数据包来的时候,读取第一行数据,并且和缓存的数据拼接起来进行解析。
2、每读取一行文件内容数据,就把数据写入磁盘,导致磁盘IO繁忙。
3、查找文件内容结束位置对性能消耗严重:首先需要比较每行数据的开始位置是否是结束标记“--”,如果不是则把此行数据写文件,如果是则继续比较此行数据是否是边界值boundary,如果是,则说明是文件结束,如果不是则把此行数据写文件。
发明内容
本发明的目的在于克服上述技术不足,提供一种MIME格式上传文件的存储方法、装置以及计算机存储介质,解决现有技术中按行解析和存储时文件存储逻辑复杂、磁盘IO繁忙以及性能消耗高的技术问题。
为达到上述技术目的,本发明的技术方案提供一种MIME格式上传文件的存储方法,包括以下步骤:
识别并上传MIME格式的数据包,申请内存块用于数据包缓存;
将所述数据包中设定字节的数据缓存至内存块,解析首次缓存数据,并将首次缓存数据中除MIME格式信息外的内容数据写入磁盘;
继续对所述数据包中数据进行缓存,每缓存设定字节的数据后将缓存数据写入磁盘;
判断剩余未缓存数据是否大于设定字节,如果大于,则转上一步;否则将剩余数据缓存至内存块,解析末次缓存数据,并将末次缓存数据中除MIME格式信息外的内容数据写入磁盘。
本发明还提供一种MIME格式上传文件的存储装置,包括处理器以及存储器,所述存储器上存储有计算机程序,所述计算机程序被所述处理器执行时,实现所述MIME格式上传文件的存储方法。
本发明还提供一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现所述MIME格式上传文件的存储方法。
与现有技术相比,本发明的有益效果包括:本发明首先申请一个内存块对数据包进行缓存,首次缓存完成后从首次缓存数据中依次解析出文件名、文件内容起始位置等MIME格式信息,由于首次缓存数据中已经完全包含我们需要解析和提取的内容,此时无需考虑特征分片带来的问题,从而解决了特征分片导致的存储逻辑复杂的问题。后续每缓存设定字节数据写一次文件,避免磁盘IO频繁。通过剩余未缓存数据的大小准确定位末次缓存数据,末次缓存数据中肯定能找到结束特征,这样只需一次查找就可以找到文件内容结束位置,极大降低查找文件内容结束位置对设备性能的消耗。
附图说明
图1是本发明提供的MIME格式上传文件的存储方法一实施方式的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
实施例1
如图1所示,本发明的实施例1提供了MIME格式上传文件的存储方法,包括以下步骤:
S1、识别并上传MIME格式的数据包,申请内存块用于数据包缓存;
S2、将所述数据包中设定字节的数据缓存至内存块,解析首次缓存数据,并将首次缓存数据中除MIME格式信息外的内容数据写入磁盘;
S3、继续对所述数据包中数据进行缓存,每缓存设定字节的数据后将缓存数据写入磁盘;
S4、判断剩余未缓存数据是否大于设定字节,如果大于,则转上一步;否则将剩余数据缓存至内存块,解析末次缓存数据,并将末次缓存数据中除MIME格式信息外的内容数据写入磁盘。
本发明实施例在MIME格式文件上传后,首先申请一个内存块对上传的数据包进行缓存。首次缓存完成后从首次缓存数据中依次解析出文件名、文件内容起始位置等MIME格式信息,由于首次缓存数据中已经完全包含我们需要解析和提取的内容,此时无需考虑特征分片带来的问题,从而解决了特征分片导致的存储逻辑复杂的问题。后续每缓存设定字节数据写一次文件,避免磁盘IO频繁。通过剩余未缓存数据的大小准确定位末次缓存数据,末次缓存数据中肯定能找到结束特征,这样只需一次查找就可以找到文件内容结束位置,极大降低查找文件内容结束位置对设备性能的消耗。
应该理解的,每次缓存的缓存数据,其字节大小可以是不一样的,即每次缓存的设定字节可以是不一样的。
本发明提供的MIME格式上传文件的存储方法,解决了特征分片导致的文件存储逻辑复杂的问题;解决按行存储文件导致磁盘IO繁忙的问题;解决查找文件内容结束位置对设备性能消耗高的问题,无论上传的文件多大,只需要一次查找就可以找到文件内容结束位置,提高了设备处理性能。
优选的,识别并上传MIME格式的数据包,具体为:
根据MIME格式特征识别MIME格式的数据包,并采用表单方式上传所述数据包。
根据MIME格式特征识别出待上传的MIME文件,并采用表单方式(表单方式即Content-Type:multipart/form-data)上传。
优选的,所述首次缓存数据的字节数大于MIME格式信息的字节数。
首次缓存数据的字节数大于MIME格式信息的字节数,便于从首次缓存数据中解析出文件名、文件内容起始位置等MIME格式信息,从而有效避免特征分片,保证可以一次性从首次缓存数据中解析出起始位置前的所有MIME格式信息。
优选的,解析首次缓存数据,并将首次缓存数据中除MIME格式信息外的内容数据写入磁盘,具体为:
从所述首次缓存数据中解析出文件内容起始位置,根据所述文件内容起始位置从所述首次缓存数据中提取除MIME格式信息外的内容数据,并写入磁盘。
文件内容起始位置之前的数据为MIME格式信息,文件内容起始位置之后的数据为内容数据,因此解析出文件内容起始位置后,即可准确提取出除MIME格式信息外的内容数据进行存储。
优选的,判断剩余未缓存数据是否大于设定字节,具体为:
计算剩余未缓存数据:
剩余未缓存数据=上传数据的总长度-已经缓存数据总长度;
上传数据的总长度=内容数据长度+MIME格式信息长度;
判断计算出的剩余未缓存数据是否大于设定字节。
优选的,解析末次缓存数据,并将末次缓存数据中除MIME格式信息外的内容数据写入磁盘,具体为:
从所述末次缓存数据中解析出文件内容结束位置,根据所述文件内容结束位置从所述末次缓存数据中提取除MIME格式信息外的内容数据,并写入磁盘。
文件内容结束位置之前的数据为内容数据,文件内容结束位置之后的数据为MIME格式信息,因此解析出文件内容结束位置后,即可准确提取出除MIME格式信息外的内容数据进行存储。
以网易网盘上传一个10000字节大小文件test.txt为例说明采用本发明如何实现MIME格式上传文件的存储:
首先缓存2000字节数据,从这2000字节数据中提取文件名test.txt信息,并找到文件内容的起始位置(假设文件内容的起始位置con_start_pos为1000),则首次缓存的2000字节数据中文件真实内容数据的长度为2000-1000=1000字节,把这1000字节的内容数据写入磁盘,并在会话上记录偏移值write_offse=1000,已经上传数据的总长度为upload_len=2000。
继续缓存数据,当缓存的数据长度达到4000字节长度,则把此4000字节数据写入磁盘,并记录write_offset=4000+1000=5000,已经上传数据的总长度为upload_len=2000+4000=6000。
继续缓存数据,当缓存的数据长度达到4000字节长度,则把此4000字节数据写入磁盘,并记录write_offset=5000+4000=9000,已经上传数据的总长度为upload_len=2000+4000+4000=10000。
此时,上传数据的总长度=文件内容数据长度(10000字节)+MIME格式信息长度(2000字节)=12000字节,剩余未缓存数据长度content_length=上传数据的总长度(12000字节)-已经缓存数据长度(10000字节)=2000字节,这2000字节中不全是文件内容数据,还包含MIME格式信息,首先把这2000字节数据缓存起来,当缓存完成后,从这2000字节数据中查找文件内容结束位置content_end_pos=1000,则说明最后2000字节中包含的文件内容数据长度为1000字节,把这1000字节写入磁盘,文件存储完成。文件总共存储的长度为1000+4000+4000+1000=10000字节。
实施例2
本发明的实施例2提供了MIME格式上传文件的存储装置,包括处理器以及存储器,所述存储器上存储有计算机程序,所述计算机程序被所述处理器执行时,实现实施例1提供的MIME格式上传文件的存储方法。
本发明实施例提供的MIME格式上传文件的存储装置,用于实现MIME格式上传文件的存储方法,因此,MIME格式上传文件的存储方法所具备的技术效果,MIME格式上传文件的存储装置同样具备,在此不再赘述。
实施例3
本发明的实施例3提供了计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现实施例1提供的MIME格式上传文件的存储方法。
本发明实施例提供的计算机存储介质,用于实现MIME格式上传文件的存储方法,因此,MIME格式上传文件的存储方法所具备的技术效果,计算机存储介质同样具备,在此不再赘述。
以上所述本发明的具体实施方式,并不构成对本发明保护范围的限定。任何根据本发明的技术构思所做出的各种其他相应的改变与变形,均应包含在本发明权利要求的保护范围内。
Claims (8)
1.一种MIME格式上传文件的存储方法,其特征在于,包括以下步骤:
识别并上传MIME格式的数据包,申请内存块用于数据包缓存;
将所述数据包中设定字节的数据缓存至内存块,解析首次缓存数据,并将首次缓存数据中除MIME格式信息外的内容数据写入磁盘;
继续对所述数据包中数据进行缓存,每缓存设定字节的数据后将缓存数据写入磁盘;
判断剩余未缓存数据是否大于设定字节,如果大于,则转上一步;否则将剩余数据缓存至内存块,解析末次缓存数据,并将末次缓存数据中除MIME格式信息外的内容数据写入磁盘。
2.根据权利要求1所述的MIME格式上传文件的存储方法,其特征在于,识别并上传MIME格式的数据包,具体为:
根据MIME格式特征识别MIME格式的数据包,并采用表单方式上传所述数据包。
3.根据权利要求1所述的MIME格式上传文件的存储方法,其特征在于,所述首次缓存数据的字节数大于MIME格式信息的字节数。
4.根据权利要求1所述的MIME格式上传文件的存储方法,其特征在于,解析首次缓存数据,并将首次缓存数据中除MIME格式信息外的内容数据写入磁盘,具体为:
从所述首次缓存数据中解析出文件内容起始位置,根据所述文件内容起始位置从所述首次缓存数据中提取除MIME格式信息外的内容数据,并写入磁盘。
5.根据权利要求1所述的MIME格式上传文件的存储方法,其特征在于,判断剩余未缓存数据是否大于设定字节,具体为:
计算剩余未缓存数据:
剩余未缓存数据=上传数据的总长度-已经缓存数据总长度;
上传数据的总长度=内容数据长度+MIME格式信息长度;
判断计算出的剩余未缓存数据是否大于设定字节。
6.根据权利要求1所述的MIME格式上传文件的存储方法,其特征在于,解析末次缓存数据,并将末次缓存数据中除MIME格式信息外的内容数据写入磁盘,具体为:
从所述末次缓存数据中解析出文件内容结束位置,根据所述文件内容结束位置从所述末次缓存数据中提取除MIME格式信息外的内容数据,并写入磁盘。
7.一种MIME格式上传文件的存储装置,其特征在于,包括处理器以及存储器,所述存储器上存储有计算机程序,所述计算机程序被所述处理器执行时,实现如权利要求1-6任一所述的MIME格式上传文件的存储方法。
8.一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1-6任一所述的MIME格式上传文件的存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010118522.7A CN111399769B (zh) | 2020-02-26 | 2020-02-26 | 一种mime格式上传文件的存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010118522.7A CN111399769B (zh) | 2020-02-26 | 2020-02-26 | 一种mime格式上传文件的存储方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111399769A CN111399769A (zh) | 2020-07-10 |
CN111399769B true CN111399769B (zh) | 2021-01-26 |
Family
ID=71430458
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010118522.7A Active CN111399769B (zh) | 2020-02-26 | 2020-02-26 | 一种mime格式上传文件的存储方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111399769B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3128700A1 (en) * | 2015-08-04 | 2017-02-08 | BlackBerry Limited | Method and device for attaching messages stored at a device as attachments to a message being composed at the device |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1355231A3 (en) * | 2001-11-21 | 2003-10-29 | Sun Microsystems, Inc. | Processing data files using plug-ins |
KR20030004159A (ko) * | 2002-10-08 | 2003-01-14 | 장원준 | 이메일 주소를 갖는 게시판 |
JP4635821B2 (ja) * | 2005-10-24 | 2011-02-23 | 富士ゼロックス株式会社 | 情報処理装置、情報処理方法、及びプログラム |
US8214439B2 (en) * | 2005-12-06 | 2012-07-03 | Microsoft Corporation | Document object model API for MIME |
EP2424189A3 (en) * | 2007-10-15 | 2012-06-13 | Penango, Inc. | Methods and systems for encouraging secure communications |
US20120284267A1 (en) * | 2011-05-06 | 2012-11-08 | International Business Machines | Item Randomization with Item Relational Dependencies |
US9426209B2 (en) * | 2012-11-12 | 2016-08-23 | Sap Se | Upload/download of mobile applications using a MIME repository |
WO2014093900A1 (en) * | 2012-12-13 | 2014-06-19 | Huawei Technologies Co., Ltd. | Content based traffic engineering in software defined information centric networks |
US9648127B2 (en) * | 2014-12-15 | 2017-05-09 | Level 3 Communications, Llc | Caching in a content delivery framework |
CN109597568B (zh) * | 2018-09-18 | 2022-03-04 | 天津字节跳动科技有限公司 | 一种数据存储方法、装置、终端设备及存储介质 |
CN109857339A (zh) * | 2019-01-10 | 2019-06-07 | 平安科技(深圳)有限公司 | 文件存储方法、装置、计算机设备和存储介质 |
-
2020
- 2020-02-26 CN CN202010118522.7A patent/CN111399769B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3128700A1 (en) * | 2015-08-04 | 2017-02-08 | BlackBerry Limited | Method and device for attaching messages stored at a device as attachments to a message being composed at the device |
Also Published As
Publication number | Publication date |
---|---|
CN111399769A (zh) | 2020-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8645453B2 (en) | Method and system of processing cookies across domains | |
Ihm et al. | Towards understanding modern web traffic | |
US10567407B2 (en) | Method and system for detecting malicious web addresses | |
US20170199850A1 (en) | Method and system to decrease page load time by leveraging network latency | |
US9077681B2 (en) | Page loading optimization using page-maintained cache | |
CN1234086C (zh) | 用于高速缓存文件信息的系统和方法 | |
CN104657401A (zh) | 一种web缓存的更新方法 | |
KR20160024293A (ko) | 통신 시스템에서 페이지 로딩 시간 단축 방법 및 장치 | |
CN103118007A (zh) | 一种用户访问行为的获取方法和系统 | |
CN103425765A (zh) | 网页正文的提取方法和装置、网页预览方法和系统 | |
CN110737853B (zh) | 一种多平台展示静态页面数据同步方法及b2b系统 | |
WO2009009123A2 (en) | Method for media discovery | |
CN104050253A (zh) | 一种网页展示方法及浏览器 | |
US7069292B2 (en) | Automatic display method and apparatus for update information, and medium storing program for the method | |
CN111258956A (zh) | 一种面向远端海量数据文件预读的方法及设备 | |
CN110290396B (zh) | 一种视频处理的方法、装置、系统、设备和存储介质 | |
CN106681659A (zh) | 数据压缩的方法及装置 | |
CN111399769B (zh) | 一种mime格式上传文件的存储方法及装置 | |
CN114629929A (zh) | 一种日志记录方法、装置及系统 | |
CA2391417A1 (en) | A system and method of mediating a web page | |
CN105824820A (zh) | 一种媒体文件的缓存方法和装置 | |
CN110855786B (zh) | 针对网络数据请求的处理方法、设备及计算机存储介质 | |
CN116320648B (zh) | 一种弹幕绘制方法、装置及电子设备 | |
JP5215393B2 (ja) | コンテンツサーバの待ち時間の決定 | |
CN116346785A (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 |