您的位置:首页 > 编程语言 > PHP开发

php文件上传

2014-04-14 10:50 260 查看
/*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[]">
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: