
php上传函数怎么封装?
<?php
//上传文件调用
$file = $_FILES['image'];
//允许上传的类型
$allow = array('image/jpeg', 'image/png', 'image/jpg', 'image/gif');
$path = './uploads';
$maxsize = 1024 * 1024 * 3;
$result = upload($file, $allow, $error, $path, $maxsize);
if ($result) {
//上传成功
echo "文件上传成功,新的文件名叫".$result;
}else{
//上传失败
echo $error;
}
/**
*文件的上传
*@param array $file 上传的文件的相关信息(是一个数组有五个元素)
*@param array $allow 允许文件上传的类型
*@param string & $error 引用传递,用来记录错误的信息
*@param string $path 文件上传的目录,不带最后的 /
*@param int $maxsize = 1024*1024 允许上传的文件大小
*@return mixed false | $newname 如果上传失败返回false,成功返回文件的新名字
**/
function upload($file, $allow, &$error, $path, $maxsize =1048576){
//先判断系统错误
switch ($file['error']) {
case 1:
$error = '上传错误,超出了服务器文件限制的大小!';
return false;
case 2:
$error = '上传错误,超出了浏览器表单允许的大小!';
return false;
case 3:
$error = '上传错误,文件上传不完整!';
return false;
case 4:
$error = '上传错误,请您先选择要上传的文件!';
return false;
case 6:
case 7:
$error = '对不起,服务器繁忙,请稍后再试!';
return false;
}
//判断逻辑错误
//验证文件的大小
if ($file['size'] > $maxsize) {
//超出用户了自己规定的大小
$error = '上传错误,超出了文件限制的大小!';
return false;
}
//判断文件的类型
if (!in_array($file['type'], $allow)) {
//非法的文件类型
$error = '上传的文件的类型不正确,允许的类型有:'.implode(',', $allow);
return false;
}
//移动临时文件
//指定文件上传后保存的路径
$newname = randName($file['name']); //得到文件新的名字
//判断$path 目录是否存在 不存在则创建
if (!file_exists($path)) {
mkdir($path, 0777, true);
}
$target = $path . '/' . $newname;
$result = move_uploaded_file($file['tmp_name'], $target);
if ($result) {
//上传成功
return $newname;
}else{
//上传失败
$error = '发生未知错误,上传失败';
return false;
}
}
/**
*生成一个随机名字的函数 文件名=当前的时间 + 随机的几位数字
*@param string $filename 文件的原始名字
*@return string $newname 文件的新名字
*
*/
function randName($filename){
//生成文件名的时间部分
$newname = date('YmdHis');
//加上随机的6位数
$str = '0123456789';
for ($i=0; $i < 6; $i++) {
$newname .= $str[mt_rand(0, strlen($str)-1)];
}
//加上文件的后缀名
$newname .= strrchr($filename, '.');
return $newname;
}HTML上传代码
<!DOCTYPE html> <html> <head> <title>文件上传</title> <meta charset="utf-8"> </head> <body> <form method="post" action="upload.php" enctype="multipart/form-data"> <input type="file" name="image"> <input type="submit" name="" value="上传"> </form> </body> </html>
推荐:《PHP教程》
以上就是php上传函数怎么封装的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号