利用前端框架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')
}
}
希望能够帮到你!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)