介绍
本篇文章给大家分享的是有关使用PHP怎么实现切割上传大文件功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
<强>何为大文件切割上传? 强>
原理:利用HTML5的新特性,将文件内容切割成分段的二进制信息,然后每次向服务器上传一段,而服务器,只需要把我们每次上传的二进制信息整合存储到一个文件中,那么最后这个文件就是所上传的文件。
由于PHP。ini默认的上传大小为2 m,如果每批都上传2 m,我测试的时候时间比较长,这里我将其限制大小该为20 m,最大的帖子数据为28米,便于测试。如果实际开发中不能修改其参数,则每批上传的数据不能超过最大限制。
post_max_size =28米 upload_max_filesize =, 20 m
<强> JavaScript中的文件对象强>
在之前的文章中我们已经使用到了这个Api,文件对象中保存了文件的大小,名称,类型等信息
<强> JavaScript中的团对象强>
团对象是二进制对象,也是文件对象的父类,团对象中有一个很重要的方法:<代码>片()代码>方法,利用这个方法我们可以把文件内容切割成二进制信息。<代码>片()代码>方法接受三个参数,起始偏移量,结束偏移量,还有可选的mime类型。如果mime类型,没有设置,那么新的团对象的mime类型和父级一样。
<强>案例:强>
项目结构图:
13-slice-upload。html文件:
页面中主要有一个上传控件,确认文件后响应selfile方法,然后读取文件信息,设置每批上传文件限制为10米,接着在而循环中,不断的切割文件,然后发送上传请求。
& lt; ! DOCTYPE html> & lt; html> & lt; head> ,& lt; meta charset=皍tf-8"比; ,& lt; meta  http-equiv=癤-UA-Compatible",内容=癐E=edge"比; ,& lt; title>大文件切割上传& lt;/title> ,& lt; link  rel=皊tylesheet" https://www.yisu.com/zixun/, href=" "> <>脚本 函数selfile () { const长度=1024 * 1024 * 10;//每次上传的大小 var文件=document.getElementsByName(视频)[0].files[0];//文件对象 var totalSize=file.size;//文件总大小 var=0开始;//每次上传的开始字节 var=开始+长度;//每次上传的结尾字节 var fd=null//创建表单数据对象 var blob=零;//二进制对象 var xhr=零;//xhr对象 而(开始脚本 >头 <身体> 大文件切割上传
身体>