您好,欢迎访问一九零五行业门户网

php文件上传之多文件上传,_PHP教程

php文件上传之多文件上传, 在胡说之前,首先声明,本文是建立在掌握php单文件上传的基础上,所以这里就不赘述文件上传服务器配置,表单设置该注意的地方了。
 话不多少,直入主题,在请求页面方面有两种写法(只呈现表单部分,以上传三个文件为例。)
请选择我的上传文件
请选择我的上传文件
两个对比,发现仅仅是name的不同,第一个将name设置成数组的形式,而第二个则是我们通常设置也很容易想到的一种方法。
虽然表面上显示的仅仅有一点点不同,但真正提交到doaction.php页面的$_files则有很大不同。
第一种的$_files是一个三维数组,而第二种是二维数组,如下:
function getfiles(){ foreach($_files as $file){ $filenum=count($file['name']); if ($filenum==1) { $files=$file; }else{ for ($i=0; $i $max_size) { $res['mes']=$filename.文件超过规定上传大小; } $ext=getext($filename); if (!in_array($ext, $allowext)) { $res['mes']=$filename.'文件名不合乎规范'; } if (!is_uploaded_file($temp_name)) { $res['mes']=$filename.文件不是通过http post 方法上传上传过来的; } if (@$res) { return $res; } if (!file_exists($path)) { mkdir($path,0777,true);chmod($path, 0777); } $fname=getuniname(); $destination=$path.'/'.$fname.'.'.$ext; if (move_uploaded_file($temp_name, $destination)) { $res['mes']=$filename.'上传成功'; $res['dest']=$destination; }else{ $res['mes']=$filename.文件上传失败; } }else{ switch ($error) { case '1': $res['mes']=超过了配置文件上传文件的大小; break; case '2': $res['mes']=超过表单设置上传文件文件的大小; break; case '3': $res['mes']=文件部分被上传; break; case '4': $res['mes']=没有文件被上传; break; case '6': $res['mes']=没有找到临时目录; break; case '7': $res['mes']=文件不可写; break; default: $res['mes']=上传文件失败; break; } } return $res;}
其中还涉及了两个小函数:
/** * 获得文件扩展名 * @param string $filename 上传文件名 * @return string 返回扩展名 */function getext($filename){ $arr=explode('.', basename($filename)); return end($arr);}/** * 获得文件唯一扩展名 * @return string 经过md5后生成32位唯一的上传文件名 */function getuniname(){ return md5(uniqid(microtime(true),true)); }
感受:
很久前接触过php文件上传,当时感觉一团乱麻。现在看来只要掌握$_files里面包含什么信息,利用自己写过的知识处理一些小技巧,系统有逻辑的加以考虑,适时地封装函数,以后文件上传就可以很快地展开。这次我展现的代码必然不是能满足任何需要,所以可以适当改造,成为自己的代码。比如如果要求上传文件是图片内容的话,单靠扩展名是绝对不能判断的,还需要利用图片的特性加以验证。
http://www.bkjia.com/phpjc/1037990.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/1037990.htmltecharticlephp文件上传之多文件上传, 在胡说之前,首先声明,本文是建立在掌握php单文件上传的基础上,所以这里就不赘述文件上传服务器配置,表...
其它类似信息

推荐信息