使用PHP怎么实现切割上传大文件功能

  介绍

本篇文章给大家分享的是有关使用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类型和父级一样。

<强>案例:

项目结构图:

使用PHP怎么实现切割上传大文件功能

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对象   而(开始 头   <身体>   

大文件切割上传

        

13-slice-upload。php文件:

如果第一次上传时,文件不存在,就创建文件,此后上传只需要把数据追加到此文件中。

& lt; php ?/* *   ,*大文件切割上传,把每次上传的数据合并成一个文件   ,* @author  webbc   ,*/时间=美元filename  & # 39;。/上传/upload.wmv& # 39;;//确定上传的文件名//第一次上传时没有文件,就创建文件,此后上传只需要把数据追加到此文件中   如果(! file_exists ($ filename)) {   ,函数(带有_file美元[& # 39;视频# 39;][& # 39;tmp_name& # 39;], $ filename);   其他}{   file_get_contents ($, $ filename,写入带有_file[& # 39;视频# 39;][& # 39;tmp_name& # 39;]), FILE_APPEND);   }   ?在

运行结果图:

使用PHP怎么实现切割上传大文件功能

<强>解释:

此处我上传了一个46.8米的视频文件,如果按每批发送10米的话,共需发送5次,也就是说会请求服务器5次。如下图所示。

使用PHP怎么实现切割上传大文件功能

PHP的框架有哪些

PHP的框架:1,Laravel, Laravel是一款免费并且开源的PHP应用框架。2,Phalcon, Phalcon是运行速度最快的一个PHP框架。3,Symfony, Symfony是一款为Web项目准备的PHP框架。4,Yii, Yii是一款快速、安全和专业的PHP框架。5,CodeIgniter, CodeIgniter是一款非常敏捷的开源PHP框架。6,CakePHP, CakePHP是一款老牌的PHP框架1:8)。Kohana, Kohana是一款敏捷但是功能强大的PHP框架。

使用PHP怎么实现切割上传大文件功能