CN111355793A - 一种基于HTML5和Python的大文件上传方法 - Google Patents
一种基于HTML5和Python的大文件上传方法 Download PDFInfo
- Publication number
- CN111355793A CN111355793A CN202010118505.3A CN202010118505A CN111355793A CN 111355793 A CN111355793 A CN 111355793A CN 202010118505 A CN202010118505 A CN 202010118505A CN 111355793 A CN111355793 A CN 111355793A
- Authority
- CN
- China
- Prior art keywords
- file
- uploading
- python
- uploaded
- files
- 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]
-
- 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
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Human Computer Interaction (AREA)
- Computing Systems (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明特别涉及一种基于HTML5和Python的大文件上传方法。该基于HTML5和Python的大文件上传方法,无需使用第三方上传文件的库,在前端将文件分隔成块,然后逐次将分隔成块的文件上传到后台,支持断点续传技术,后台Python环境拿到代码片段后拼接成完整文件,保存即可。该基于HTML5和Python的大文件上传方法,通过后台和应用程序的协作,将用户上传大文件的操作变得简单、高效,不仅实现了断点续传的功能,减少了用户等待的时间,还能防止用户多次重复上传相同内容,节省了用户的流量和时间成本,让应用程序变得更省流量,系统更流畅。
Description
技术领域
本发明涉及网页文件上传技术领域,特别涉及一种基于HTML5和Python的大文件上传方法。
背景技术
目前,在网页内上传体积庞大的文件通过接口数据请求的方式实现有很大的困难,普通html表单在上传几KB或几MB级别的文件时基本无压力,但在上传上百MB甚至是GB级别大文件很难实现。
在某些业务中,大文件上传是一个比较重要的交互场景,如上传入库比较大的Excel表格数据、上传影音文件等。如果文件体积比较大,或者网络条件不好时,上传的时间会比较长(要传输更多的报文,丢包重传的概率也更大),用户不能刷新页面,只能耐心等待请求完成。再者,上传一个大文件发生异常掉线的可能性非常大,为了避免重新上传,支持断点续传就变得非常必要了。
由于移动互联网的不稳定性,为了更好的适应当前的移动互联网,要求对上传服务支持断点续传、断线重连。
散列算法(Hash Algorithm),又称哈希算法,杂凑算法,是一种从任意文件中创造小的数字「指纹」的方法。与指纹一样,散列算法就是一种以较短的信息来保证文件唯一性的标志,这种标志与文件的每一个字节都相关,而且难以找到逆向规律。因此,当原有文件发生改变时,其标志值也会发生改变,从而告诉文件使用者当前的文件已经不是用户所需求的文件。
一个优秀的哈希算法,具有以下特点:
1)正向快速:给定明文和hash算法,在有限时间和有限资源内能计算出hash值。
2)逆向困难:给定(若干)hash值,在有限时间内很难(基本不可能)逆推出明文。
3)输入敏感:原始输入信息修改一点信息,产生的hash值看起来应该都有很大不同。
4)冲突避免:很难找到两段内容不同的明文,使得它们的hash值一致(发生冲突)。即对于任意两个不同的数据块,其hash值相同的可能性极小;对于一个给定的数据块,找到和它hash值相同的数据块极为困难。
但在不同的使用场景中,如数据结构和安全领域里,其中对某一些特点会有所侧重。
安全散列算法(英语:Secure Hash Algorithm,缩写为SHA)是一个密码散列函数家族,是FIPS所认证的安全散列算法。能计算出一个数字消息所对应到的、长度固定的字符串(又称消息摘要)的算法。且若输入的消息不同,SHA算法对应到不同字符串的机率很高。
SHA家族的五个算法,分别是SHA1、SHA224、SHA256、SHA384和SHA512。主要适用于数字签名标准(Digital Signature Standard,缩写为DSS)里面定义的数字签名算法(Digital Signature Algorithm,缩写为DSA)。比特币里面的就是SHA256算法。安全散列算法说简单一些,就是对一个对象的多个关键不重复信息组合起来,通过算法生成一个加密字符串。
基于上述情况,本发明提出了一种基于HTML5和Python的大文件上传方法。
发明内容
本发明为了弥补现有技术的缺陷,提供了一种简单高效的基于HTML5和Python的大文件上传方法。
本发明是通过如下技术方案实现的:
一种基于HTML5和Python的大文件上传方法,其特征在于:无需使用第三方上传文件的库,在前端将文件分隔成块,然后逐次将分隔成块的文件上传到后台,支持断点续传技术,后台Python环境拿到代码片段后拼接成完整文件,保存即可。
本发明基于HTML5和Python的大文件上传方法,包括以下步骤:
第一步,对整个文件进行加密处理,加密后的文件生成唯一标识的字符串;
第二步,上传前先把加密文件的值传递给后台,后台根据收到的加密文件的值查询该文件是否已经上传,如果该文件已经上传,则无需再次重复上传;
第三步,对文件进行切片处理,循环每个文件分片,将文件分片分次上传即可。
所述第一步中,对文件进行SHA256加密,加密后的文件生成一串256的字符串,所述字符串拥有唯一性,可以为后台进行文件完整性的校验进行比对。
所述第二步中,上传前将文件名称和整个文件的SHA256值传递给Python端,服务器收到校验文件的ajax请求后,查看文件是否已经存在,若文件不存在,则返回已上传文件块的列表list;若没有已上传文件,则列表list为空。
所述第三步中,利用File的API提供的slice操作对文件进行切片处理,并为文件分片进行编号,以编号作为文件名,以整个文件的SHA256值作为文件夹名进行存储。
所述第三步中,文件切片时,根据预设的分片文件大小,将整个文件分割成n+1个相同大小的分片文件,依次编号为0~n,n为自然数。
所述第三步中,文件上传时,循环每个文件分片,并与服务器返回的列表list做比对,若文件分片的文件名在列表list中则无需上传,若文件分片的文件名未在列表list中,则将对应的文件分片进行上传;当所有文件分片循环完成后,通知服务器进行文件分片的合并。
所述第三步中,向后台请求一个接口,接口里面的数据是整个文件已经上传过的文件分片;当上传中断时,服务器通过后台接口保留已上传的文件分片,当上传恢复时可以直接跳过已经上传的文件分片,直接进行后续文件分片的上传;当所有文件分片都上传完成,告知Python端合并文件。
本发明的有益效果是:该基于HTML5和Python的大文件上传方法,通过后台和应用程序的协作,将用户上传大文件的操作变得简单、高效,不仅实现了断点续传的功能,减少了用户等待的时间,还能防止用户多次重复上传相同内容,节省了用户的流量和时间成本,让应用程序变得更省流量,系统更流畅。
附图说明
附图1为本发明基于HTML5和Python的大文件上传方法示意图。
附图2为本发明前后端分工示意图。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合实施例,对本发明进行详细的说明。应当说明的是,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
该基于HTML5和Python的大文件上传方法,无需使用第三方上传文件的库,在前端将文件分隔成块,然后逐次将分隔成块的文件上传到后台,支持断点续传技术,后台Python环境拿到代码片段后拼接成完整文件,保存即可。
该基于HTML5和Python的大文件上传方法,包括以下步骤:
第一步,对整个文件进行加密处理,加密后的文件生成唯一标识的字符串;
第二步,上传前先把加密文件的值传递给后台,后台根据收到的加密文件的值查询该文件是否已经上传,如果该文件已经上传,则无需再次重复上传;
第三步,对文件进行切片处理,循环每个文件分片,将文件分片分次上传即可。
所述第一步中,对文件进行SHA256加密,加密后的文件生成一串256的字符串,所述字符串拥有唯一性,可以为后台进行文件完整性的校验进行比对。
所述第二步中,上传前将文件名称和整个文件的SHA256值传递给Python端,服务器收到校验文件的ajax请求后,查看文件是否已经存在,若文件不存在,则返回已上传文件块的列表list;若没有已上传文件,则列表list为空。
所述第三步中,利用File的API提供的slice操作对文件进行切片处理,并为文件分片进行编号,以编号作为文件名,以整个文件的SHA256值作为文件夹名进行存储。
所述第三步中,文件切片时,根据预设的分片文件大小,将整个文件分割成n+1个相同大小的分片文件,依次编号为0~n,n为自然数。
假如文件是1000M,一个文件切片大小我们定义为5M,那么整个文件就为分为200个文件切片,分200次次上传。
所述第三步中,文件上传时,循环每个文件分片,并与服务器返回的列表list做比对,若文件分片的文件名在列表list中则无需上传,若文件分片的文件名未在列表list中,则将对应的文件分片进行上传;当所有文件分片循环完成后,通知服务器进行文件分片的合并。
所述第三步中,向后台请求一个接口,接口里面的数据是整个文件已经上传过的文件分片;当上传中断时,服务器通过后台接口保留已上传的文件分片,当上传恢复时可以直接跳过已经上传的文件分片,直接进行后续文件分片的上传;当所有文件分片都上传完成,告知Python端合并文件。
与现有技术相比,该基于HTML5和Python的大文件上传方法,具有以下特点:
第一、通过后台和应用程序的协作,将用户上传大文件的操作变得简单、高效,实现轻松上传大文件;
第二、实现了断点续传的功能,减少了用户等待的时间;
第三、还能防止用户多次重复上传相同内容,节省了用户的流量和时间成本,让应用程序变得更省流量,系统更流畅。
以上所述的实施例,只是本发明具体实施方式的一种,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。
Claims (8)
1.一种基于HTML5和Python的大文件上传方法,其特征在于:无需使用第三方上传文件的库,在前端将文件分隔成块,然后逐次将分隔成块的文件上传到后台,支持断点续传技术,后台Python环境拿到代码片段后拼接成完整文件,保存即可。
2.根据权利要求1所述的基于HTML5和Python的大文件上传方法,其特征在于,包括以下步骤:
第一步,对整个文件进行加密处理,加密后的文件生成唯一标识的字符串;
第二步,上传前先把加密文件的值传递给后台,后台根据收到的加密文件的值查询该文件是否已经上传,如果该文件已经上传,则无需再次重复上传;
第三步,对文件进行切片处理,循环每个文件分片,将文件分片分次上传即可。
3.根据权利要求2所述的基于HTML5和Python的大文件上传方法,其特征在于:所述第一步中,对文件进行SHA256加密,加密后的文件生成一串256的字符串,所述字符串拥有唯一性,可以为后台进行文件完整性的校验进行比对。
4.根据权利要求3所述的基于HTML5和Python的大文件上传方法,其特征在于:所述第二步中,上传前将文件名称和整个文件的SHA256值传递给Python端,服务器收到校验文件的ajax请求后,查看文件是否已经存在,若文件不存在,则返回已上传文件块的列表list;若没有已上传文件,则列表list为空。
5.根据权利要求4所述的基于HTML5和Python的大文件上传方法,其特征在于:所述第三步中,利用File的API提供的slice操作对文件进行切片处理,并为文件分片进行编号,以编号作为文件名,以整个文件的SHA256值作为文件夹名进行存储。
6.根据权利要求5所述的基于HTML5和Python的大文件上传方法,其特征在于:所述第三步中,文件切片时,根据预设的分片文件大小,将整个文件分割成n+1个相同大小的分片文件,依次编号为0~n,n为自然数。
7.根据权利要求6所述的基于HTML5和Python的大文件上传方法,其特征在于:所述第三步中,文件上传时,循环每个文件分片,并与服务器返回的列表list做比对,若文件分片的文件名在列表list中则无需上传,若文件分片的文件名未在列表list中,则将对应的文件分片进行上传;当所有文件分片循环完成后,通知服务器进行文件分片的合并。
8.根据权利要求7所述的基于HTML5和Python的大文件上传方法,其特征在于:所述第三步中,向后台请求一个接口,接口里面的数据是整个文件已经上传过的文件分片;当上传中断时,服务器通过后台接口保留已上传的文件分片,当上传恢复时可以直接跳过已经上传的文件分片,直接进行后续文件分片的上传;当所有文件分片都上传完成,告知Python端合并文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010118505.3A CN111355793A (zh) | 2020-02-26 | 2020-02-26 | 一种基于HTML5和Python的大文件上传方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010118505.3A CN111355793A (zh) | 2020-02-26 | 2020-02-26 | 一种基于HTML5和Python的大文件上传方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111355793A true CN111355793A (zh) | 2020-06-30 |
Family
ID=71198016
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010118505.3A Pending CN111355793A (zh) | 2020-02-26 | 2020-02-26 | 一种基于HTML5和Python的大文件上传方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111355793A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113568884A (zh) * | 2021-09-26 | 2021-10-29 | 武汉四通信息服务有限公司 | 一种文件管理方法、装置、电子设备及存储介质 |
CN113645199A (zh) * | 2021-07-26 | 2021-11-12 | 浪潮卓数大数据产业发展有限公司 | 基于Java技术实现大文件上传的方法及系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102523244A (zh) * | 2011-11-18 | 2012-06-27 | 深圳中兴网信科技有限公司 | 一种网页文件的上传方法及其系统 |
CN105635324A (zh) * | 2016-03-17 | 2016-06-01 | 新浪网技术(中国)有限公司 | 用于浏览器或服务器的大文件上传、续传方法和装置 |
CN108959455A (zh) * | 2018-06-15 | 2018-12-07 | 上海陆家嘴国际金融资产交易市场股份有限公司 | 单页Web应用实现方法、装置、计算机设备和存储介质 |
CN108958927A (zh) * | 2018-05-31 | 2018-12-07 | 康键信息技术(深圳)有限公司 | 容器应用的部署方法、装置、计算机设备和存储介质 |
CN109714330A (zh) * | 2018-12-24 | 2019-05-03 | 武汉烽火众智数字技术有限责任公司 | 一种跨网络的断点续传方法和系统 |
CN109819339A (zh) * | 2017-11-20 | 2019-05-28 | 创盛视联数码科技(北京)有限公司 | Html5断点续传的方法 |
CN110769016A (zh) * | 2018-07-27 | 2020-02-07 | 亿度慧达教育科技(北京)有限公司 | 文件上传方法及计算机存储介质 |
-
2020
- 2020-02-26 CN CN202010118505.3A patent/CN111355793A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102523244A (zh) * | 2011-11-18 | 2012-06-27 | 深圳中兴网信科技有限公司 | 一种网页文件的上传方法及其系统 |
CN105635324A (zh) * | 2016-03-17 | 2016-06-01 | 新浪网技术(中国)有限公司 | 用于浏览器或服务器的大文件上传、续传方法和装置 |
CN109819339A (zh) * | 2017-11-20 | 2019-05-28 | 创盛视联数码科技(北京)有限公司 | Html5断点续传的方法 |
CN108958927A (zh) * | 2018-05-31 | 2018-12-07 | 康键信息技术(深圳)有限公司 | 容器应用的部署方法、装置、计算机设备和存储介质 |
CN108959455A (zh) * | 2018-06-15 | 2018-12-07 | 上海陆家嘴国际金融资产交易市场股份有限公司 | 单页Web应用实现方法、装置、计算机设备和存储介质 |
CN110769016A (zh) * | 2018-07-27 | 2020-02-07 | 亿度慧达教育科技(北京)有限公司 | 文件上传方法及计算机存储介质 |
CN109714330A (zh) * | 2018-12-24 | 2019-05-03 | 武汉烽火众智数字技术有限责任公司 | 一种跨网络的断点续传方法和系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113645199A (zh) * | 2021-07-26 | 2021-11-12 | 浪潮卓数大数据产业发展有限公司 | 基于Java技术实现大文件上传的方法及系统 |
CN113568884A (zh) * | 2021-09-26 | 2021-10-29 | 武汉四通信息服务有限公司 | 一种文件管理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2022252632A1 (zh) | 一种数据加密处理方法、装置、计算机设备及存储介质 | |
CN108234539B (zh) | 一种文件上传、下载、传输方法及装置 | |
US20120226823A1 (en) | Document distribution system and method | |
KR101145789B1 (ko) | 콘텐츠 분류 방법 및 시스템 | |
CN110597824B (zh) | 一种基于区块链网络的数据存储方法以及装置 | |
CN101552669A (zh) | 数据传输的方法及系统 | |
CN110572422B (zh) | 数据下载方法、装置、设备和介质 | |
CN112615899A (zh) | 一种大文件传输方法、装置及系统 | |
CN112565393B (zh) | 文件上传方法、下载方法、装置、计算机设备和存储介质 | |
CN110912920A (zh) | 数据处理方法、设备及介质 | |
CN106557704B (zh) | 内容中心网络中的信息和数据框架 | |
CN108777685B (zh) | 用于处理信息的方法和装置 | |
US10983718B2 (en) | Method, device and computer program product for data backup | |
CN113032357A (zh) | 文件的存储方法、装置和服务器 | |
CN113535432B (zh) | 数据分流方法、装置、电子设备及存储介质 | |
CN111355793A (zh) | 一种基于HTML5和Python的大文件上传方法 | |
CN113517985B (zh) | 文件数据处理方法、装置、电子设备及计算机可读介质 | |
CN112468291A (zh) | 一种同步敏感数据的方法、装置、系统、计算机设备及计算机可读存储介质 | |
CN112035763A (zh) | 信息处理的方法、装置及系统,电子设备及存储介质 | |
CN106411996B (zh) | 内容中心网络中的内容协商 | |
CN112087475A (zh) | 一种云平台组件应用的消息推送方法、装置及消息服务器 | |
EP2380098A1 (en) | Dictionary-based data compression and subsequent data transmission in a server / client architecture | |
CN110650014B (zh) | 一种基于hessian协议的签名认证方法、系统、设备及存储介质 | |
CN115361376A (zh) | 政务文件上传方法、装置、电子设备及存储介质 | |
CN113900990A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200630 |
|
RJ01 | Rejection of invention patent application after publication |