分片上传的原理就是通过切割上传文件,然后在浏览器的头部通过etag来进行划分文件传输,服务器端接收到文件片段和分割起始符之后,进行拼接文件,最后合成一个大文件。
你可以自己通过php来获取浏览器头部传输标志来进行文件的拼接组装,也可以通过现有的大文件传输类来上传文件。
关键点记住分割文件点,也就是分割文件的顺序,拼接文件需要通过etag按照顺序拼接,分片可以并发传输,这其实也是并发下载的原理。
$_FILES官方文档
你可以看看官方的$_FILES文档,里面有对$_FILES的内容的解释。
想通过PHP来处理文件信息就得通过$_FILES的内容来处理,比如文件类型可以用type来判断,要求文件类型为jpg,那就判断if ($_FILES['file1']['type'] === 'image/jpeg'),这里的file1并不是绝对的,视情况而定。
当然如果你觉得判断类型太麻烦,你也可以直接从name中判断后缀名,自己将文件名分割一下就好了。大小可以用size,默认单位是字节,不超过2M就要除以1024*1024了,可以将字节转换到兆字节。
要将上传的文件放在U目录下,就用move_uploaded_file函数来解决,move_uploaded_file官方文档
$arrDenyExts = array("gif", "jpeg", "jpg", "png") //不允许上传文件的格式$temp = explode(".", $_FILES["file"]["name"]) //按点分割文件名,这里根据
//$temp = explode(".","d:\test.jpg") //按点分割文件名
$extension = end($temp)//获取最后一个元素,确保是文件格式
$isAllow = true
foreach($arrDenyExts as $key=>$val) {
if($extension==$val) {
$isAllow=false
break
}
}
if($isAllow) {
echo "该文件格式允许上传<br/>"
} else {
echo "该文件格式不允许上传<br/>"
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)