php 上传流程,php文件上传处理流程及多文件上传的思路

1,判断文件是否为空 empty($_FILES[表单名][name])

2,判断文件上传是否成功 $_FILES[表单名][error]

3,判断文件上传类型$_FILES[表单名][type]

4,判断文件是不是上传文件,is_uploaded_file

5,移动上传的文件,move_uploaded_file

6,如果写成方法,需要返回文件路径

多文件上传

1,过滤空值array_filter()

2,循环上传

/**

* 文件上传处理函数

* @param array $upfile 上传文件信息数组,如:$_FILES['pic'];

* @param string $path 上传文件的存储目录路径

* @param array $typelist 允许上传的文件类型,默认为array()则表示不限制类型

*如:array("image/jpeg","image/gif","image/png"); //定义允许的上传文件类型

* @param int $maxsize 允许上传文件的大小,默认为0表示不限制。

* @return array 返回值为两个单元的数组,

*第一个单元下标为error:true表示成功,false表示失败

*第二个单元下标为info:上传成功表示文件名,上传失败表示失败原因

*/

function uploadFile($upfile,$path,$typelist=array(),$maxsize=0){

//1.定义一些变量:

$path=$path.'/'.date('Ymd').'/';

if(!is_dir($path)){

mkdir($path,0777,true);

}

$path=rtrim($path,"/")."/"; //处理一下上传目录

$res=array("error"=>false,"info"=>""); //定义返回值

//2.判断上传文件错误

if($upfile['error']>0){

switch($upfile['error']){

case 1: $info="上传文件大小超过了php.ini中配置"; break;

case 2: $info="上传文件大小超过form表单中MAX_FILE_SIZE的设置"; break;

case 3: $info="文件只有部分被上传"; break;

case 4: $info="没有文件被上传"; break;

case 6: $info="找不到临时文件夹"; break;

case 7: $info="文件写入失败"; break;

default: $info="未知错误!"; break;

}

$res['info']=$info;

return $res;

}

//3.判断上传文件类型

if(count($typelist)>0 && !in_array($upfile['type'],$typelist)){

$res['info']="上传文件类型错误!当前文件类型:".$upfile['type'];

return $res;

}

//4.判断上传文件大小

if($maxsize>0 && $upfile['size']>$maxsize){

$res['info']="上传文件大小超出{$maxsize}";

return $res;

}

//5.上传文件的名称处理(防止名字重复)

$ext = pathinfo($upfile['name'],PATHINFO_EXTENSION);//获取文件的后缀名

do{

$newfile = time().rand(1000,9999).".".$ext;  //随机一个文件名

}while(file_exists($path.$newfile)); //判断是否存在

//6.执行文件上传。

//判断临时目录的的文件是否是有效的上传文件

if(is_uploaded_file($upfile['tmp_name'])){

// 这个就类似于copy函数

if(move_uploaded_file($upfile['tmp_name'],$path.$newfile)){

$res['error']=true;

$res['info']=$newfile;

}else{

$res['info']="移动上传文件错误!";

}

}else{

$res['info']="不是有效的上传文件!";

}

return $res;

}

文件上传方法

$arr=uploadFile($_FILES['file'],'./upload');

var_dump($arr);

上传方法调用

调用成功后,会在upload文件夹下创建以年月日为目录名的文件夹,并将文件进行上传

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值