php文件上传
2014-04-14 10:50
302 查看
/*PHP处理上传的数据(用超全局数组获取表单等上传过来的数据POST,FILES): * $_POST接收非文件上传的表单数据; * 如果是接收文件上传的数据就使用$_FILES处理。print_r ($_FILES); * * 有文件上传操作的表单的提交方法method必须是HTTP POST * 表单中:使用 <input type="file" name="pic[]">,达到选择文件上传的效果;name很重要 * 表单中:enctype="multipart/form-data"指定form编码的数据方式。让服务器知道,需要传一个文件并带有常规的表单信息,如果不加这个属性,FILES接收不到上传的file数据 * action : 单个文件上传:二维数组 *Array ( [pic] => Array ( [name] => anobii-large_blue.png 这是上传的文件的名 [type] => image/png 上传的文件的MIME类型 [tmp_name] => E:\tmpImg\phpE14F.tmp 上传后,系统自动拷贝到设置的 临时文件路径\临时文件名 。当这个脚本结束之前,一定要将它拷贝出来,存储到另一个路径下,否则它会消失。 [error] => 0 [size] => 5390 上传文件大小(字节) ) ) //*step1:使用$_FILES['pic']['error']检查错误 if($_FILES['pic']['error']>0){ switch($_FILES['pic']['error']){ case 1: echo "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值"; break; case 2: echo "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。 "; break; case 3: echo "文件只有部分被上传。 "; break; case 4: echo "没有文件被上传。 "; break; default: echo"上传的文件有未知的错误"; } exit(); //step2:使用$_FILES['pic']['size']限制大小 单位字节 2M=2000000 * $maxsize=50000;//50K if($_FILES['pic']['size'] > $maxsize){ echo "上传的文件太大,不能超过{$maxsize}字节"; exit(); } echo "文件正常"; copy($_FILES["pic"]["tmp_name"][0],'./upload/aaa.gif'); //step3:使用$_FILES['pic']['type']或是文件的扩展名 限制文件的类型 * list($dl,$xl)=explore("/",$_FILES["pic"]["type"]);//分割Mime if($dl!="image"){ echo "请上传图片不允许其他类型"; } echo "上传正常"; $allowImageType=array("png","gif","jpg","jpeg"); $arr=explode(".",$_FILES['pic']['name']);//取得文件名,输出后缀 $hz=$arr[count($arr)-1]; echo $hz; if(!in_array($hz,$allowImageType)){ echo "这是不符合的图片后缀"; exit; } //step4:为了安全,将上传后的文件名改名,$_FILES['pic']['name']。因为别人能猜到你上传的目录是哪, 例如:一个人上传了一个PHP文件(系统),他可能猜到上传到的目录是当前路径下的upload目录;这样他就可能去访问这个目录 $filepath="./uploads/"; //年月日时分秒.长度一致的随机文件名 $randname=date("Y").date("m").date("d").date("H").date("i").date("s").rand(100.999).".".$hz; if(is_uploaded_file($_FILES['pic']['tmp_name'])){ //if(move_uploaded_file($_FILES['pic']['tmp_name'],"./uploads/".$_FILES['pic']['name'])){ * if(move_uploaded_file($_FILES['pic']['tmp_name'],$filepath.$rnadname)){ echo "上传成共"; }else{ echo "上传失败"; } } else{ echo "不是一个上传图片"; } 多个文件上传:三维数组 Array ( [pic] => Array ( [name] => Array ( [0] => anobii-large_blue.png [1] => anobii-large_grey.png [2] => anobii-small_blue.png [3] => anobii-small_grey.png ) [type] => Array ( [0] => image/png [1] => image/png [2] => image/png [3] => image/png ) [tmp_name] => Array ( [0] => E:\tmpImg\phpF60.tmp [1] => E:\tmpImg\phpF61.tmp [2] => E:\tmpImg\phpF62.tmp [3] => E:\tmpImg\phpF63.tmp ) [error] => Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 ) [size] => Array ( [0] => 5390 [1] => 4687 [2] => 3440 [3] => 2934 ) ) ) */
单个文件上传:<input type="file" name="pic">
4个文件同时上传:<input type="file" name="pic[]">
<input type="file" name="pic[]">
<input type="file" name="pic[]">
<input type="file" name="pic[]">
相关文章推荐
- PHP ThinkPHP ,上传文件(图片),制作缩略图,批量上传文件
- PHP文件上传
- PHP-实现文件上传
- PHP安全编程:文件上传攻击的防御
- PHP文件上传设置和处理(单文件)
- php 文件上传
- Js+php实现异步拖拽上传文件
- php检查上传文件是否已存在或同名
- PHP.ini修改配置下载上传文件大小
- Js+php实现异步拖拽上传文件
- jQuery+php实现ajax文件即时上传的详解
- php中上传图片文件,并且以上传时的时间戳命名文件,并将文件的路径存在session中以便使用。
- php 利用socket上传文件
- PHP——修改上传文件大小限制
- PHP上传文件大小限制的问题
- php 大文件上传问题
- 整合了一个PHP上传文件,大家共同提高学习
- PHP文件上传进度处理方法
- PHP之CURL模块上传文件
- PHP同时上传“多个”文件示例,并格式化$_FILES数组信息