php文件上传封装函数,PHP实现文件上传下载之封装上传函数

封装上传函数

我们将上面上传功能封装成函数,代码如下:

fun_upload.php<?php

//定义一个uploadFile函数

function uploadFile($fileInfo,$path,$allowExt,$maxSize){

//取出$_FILES中的数据

$filename=$fileInfo["name"];

$tmp_name=$fileInfo["tmp_name"];

$size=$fileInfo["size"];

$error=$fileInfo["error"];

$type=$fileInfo["type"];

//取出文件路径中文件的类型的部分

$ext=pathinfo($filename,PATHINFO_EXTENSION);

//确定是否存在存放图片的文件夹,没有则新建一个

if (!file_exists($path)) {  //当目录不存在,就创建目录

mkdir($path,0777,true);//创建目录

chmod($path, 0777);//改变文件模式,所有人都有执行权限、写权限、度权限

}

//得到唯一的文件名!防止因为文件名相同而产生覆盖

$uniName=md5(uniqid(microtime(true),true)).'.'.$ext;

//目标存放文件地址

$destination=$path."/".$uniName;

//当文件上传成功,存入临时文件夹,服务器端开始判断

if ($error==0) {

if ($size>$maxSize) {

exit("上传文件过大!");

}

if (!in_array($ext, $allowExt)) {

exit("非法文件类型");

}

if (!is_uploaded_file($tmp_name)) {

exit("上传方式有误,请使用post方式");

}

//判断是否为真实图片(防止伪装成图片的病毒一类的

if (!getimagesize($tmp_name)) {//getimagesize真实返回数组,否则返回false

exit("不是真正的图片类型");

}

if (@move_uploaded_file($tmp_name, $destination)) {//@错误抑制符,不让用户看到警告

echo "文件".$filename."上传成功!";

}else{

echo "文件".$filename."上传失败!";

}

}else{

switch ($error){

case 1:

echo "超过了上传文件的最大值,请上传2M以下文件";

break;

case 2:

echo "上传文件过多,请一次上传20个及以下文件!";

break;

case 3:

echo "文件并未完全上传,请再次尝试!";

break;

case 4:

echo "未选择上传文件!";

break;

case 7:

echo "没有临时文件夹";

break;

}

}

return $destination;

}

表单页面采用之前的:html>

文件上传(客户端限制)

请选择您要上传的文件:

提交处理页面

upload3.php<?php

header('content-type:text/html;charset=utf-8');

//初始化相关变量

$fileInfo=$_FILES["myFile"];

$maxSize=10485760;//10M,10*1024*1024

$allowExt=array('jpeg','jpg','png','tif');

$path="uploads";

//引入前面封装了的上传函数fun_upload.php

include_once 'fun_upload.php';

uploadFile($fileInfo, $path, $allowExt, $maxSize);

注释很详细,大家可以复制到本地边测试边学习

封装了,我们以后使用就可以直接调用了,是不是很方便,下一节的多文件上传就将用到我们封装好的这个函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值