php文件上传相关的函数,PHP文件上传-单文件上传函数思路

单文件上传思路

----------------------------------------

1.需要一个上传文件的表单页面

表单页面需要设置POST方式提交 method="POST",并设置以附件类型上传

enctype="multipart/form-data"

表单中需要一个文件域

type="file" 说明是文件域

name="file" 用于接收上传文件

2.需要一个上传函数

①首先需要把上传的文件信息传递到函数中

$file = $_FILES['file']

function uploadFile($file){

}

②需要对上传的文件进行判断

function uploadFile($file,$path,$allowType=array(),$maxSize=0){

// a.需要一个变量接收文件的判断信息

$info = array(

'isok' => false,// 存储上传文件的状态,默认是没有上传成功

'message' => ''// 用于存放文件上传的提示信息,失败时提示错误信息,成功时提示文件名,用于后期添加文件路径到数据库

);

// b.首先要判断文件是否上传成功,通过文件上传信息中的错误号进行判断

if($file['error']>0){// 如果错误号大于0,表名上传的文件有问题

switch($file['error']){

case 1:

$info['message'] = "文件大小超出PHP的限制";// 修改错误提示信息

break;

...

...

}

// 判断完错误信息之后,返回给用户看

return $info;

}

// c.如果文件上传没有出错,那么对文件做其它方面的限制

// 限制文件上传的类型,此时需要为函数提供一个参数,用于说明可以上传那些类型的文件

// $allowType = array()// 默认是一个空数组,下面进行默认设置

if(empty($allowType)){// 如果用户没有指定上传的类型,则使用默认值

$allowType = array('image/jpeg','image/png','image/gif');// 默认只允许上传图片类型

}

// 验证是否符合类型要求

if(!in_array($file['type'],$allowType)){

// 如果上传的类型不符合要求,则不继续进行上传操作

$info['message'] = '上传类型不符合要求';

return $info;

}

// 接下来需要验证文件大小是否超出限制,所以此时需要指定一个参数用于设置文件大小

// $maxSize = 0// 默认不限制文件大小

if($maxSize && $file['size']>$maxSize){

// 如果用户设置了文件大小,并且上传的文件超过设置的大小,则上传失败

$info['message'] = '上传的文件超出限制';

return $info;

}

// d.走到这一步说明前面的基本信息验证通过

// 此时需要判断文件是否是通过合法的途径进行上传的

if(is_uploaded_file($file['tmp_name'])){// 简单的可以理解为服务器上是否存在临时文件

// 接下来就是设置文件上传目录了,需要指定一个上传目录参数,$path

// 对目录进行处理

$path = rtrim($path,'/').'/';

// 获取文件的后缀名

$suffix = pathinfo($file['name'],PATHINFO_EXTENSION);

// 设置随机的文件名,为了防止出现相同的文件名,需要进行一次判断

do{

$randName = date("YmdHis").mt_rand(1000,9999).'.'.$suffix;

}while(file_exists($path.$randName));

// 路径及文件名都设置好之后就可以移动文件了

if(move_uploaded_file($file['tmp_name'],$path.$randName)){

// 文件上传成功

$info['isok'] = true;// 修改文件上传状态标志

$info['message'] = $path.$randName;

return $info;

} else {

// 移动失败

$info['message'] = '文件移动失败';

return $info;

}

} else {

// 不是通过HTTP POST方式提交的文件

$info['error'] = '请使用HTTP POST方式上传文件';

return $info;

}

}

3.点击提交后需要对上传的文件进行处理

①接收上传的文件信息

$file = $_FILES['file'];

②引入上传函数

include('./functions.php');

③设置文件保存路径

$path = './uploads/';// 此目录需要手动创建

④调用文件上传函数

$info = uploadFile($file,$path);

⑤判断上传状态

if($info['isok']){

echo '上传成功'.$info['message'];

} else {

echo '上传失败'.$info['message'];

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值