Web Uploader + php视频分片上传

Web Uploader + php视频分片上传,第1张

由于最近项目中遇到有做视频上传的功能,决定写一篇文章详细说明大文件上传的原理和使用Baidu WebFE(FEX)团队开发的文件上传插件WebUploader。

利用前端框架WebUploader配置进行对大文件的分片(由Baidu官方测试,每5M一个分片是效率最高的),这里,我的服务端是php,所以需要修改php.ini里面的post_max_size配置,默认是2M,我这里改的是8M。

服务端php接收分片,WebUploader插件会提供一个GUID,可以利用GUID加任意个性化信息做分片名(当然,分片序号需要加上),当所有分片上传完毕后,调用合并请求,对分片进行合并即可。

上传前,我会计算整个文件的MD5值到我们的资源库去查找是否已有相同资源,如果有的话,直接文件共享即可。

首先,我们需要创建对应的文件夹

其实服务端做的事情相对比较简单了,每上传的分片写到一个文件里去,最后把分片按照序号合并起来即可。

用户上传大文件的时候或多或少会有中断,断网的情况,这个时候服务器就会出现多的分片碎片,这个完全占用服务器存储空间的,所以我们需要对这些所谓的垃圾文件做处理,我们可以设置碎片文件的过期时间,如果超过时间还存在的话,进行删除,或者当天删除前一天的分片文件夹也是可以的,这样相对来说比较省事。

public function video_process(){ //上传 视频

$folder=$_POST['folder']

//echo $folder

$url=$_POST['url']

//echo $url

$file_name=$_POST['file_name']

$type=2

$pathinfo=pathinfo($_FILES["file"]["name"])

$_FILES["file"]["name"]=time().".".$pathinfo['extension']

//echo $_FILES["file"]["name"]

$name = iconv("UTF-8", "gb2312", $_SERVER['DOCUMENT_ROOT'].$url.$_FILES["file"]["name"])

move_uploaded_file($_FILES["file"]["tmp_name"], $name)

$m=M('Upload')

$m->type=$type

$m->file_name=$file_name.".".$pathinfo['extension']

$m->folder=$folder

$m->file_adress=$_FILES["file"]["name"]

$m->add()

if($folder==1){

$this->redirect('Index/education')

}elseif ($folder==2) {

$this->redirect('Index/train')

}elseif ($folder==3) {

$this->redirect('Index/system')

}elseif ($folder==4) {

$this->redirect('Index/facility')

}elseif ($folder==5) {

$this->redirect('Index/motto')

}

}

希望能够帮到你!


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/11928243.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存