站长学院
CMS建站教程 SEO优化攻略
来源:齐鲁CMS 栏目:PHP 阅读: 日期:2023-02-06
PHP实例10:图片文件上传解析及封装上传方法,本实例分为两部分,一个是HTML文件,使用FORM表格的方式上传文件,一个是PHP文件,用来接收上传的文件,并打印出上传文件的信息,用来分析需要写哪些方法。一起来看看吧。
DIV代码:
<form action="upload.php" method="post" enctype="multipart/form-data">
<div style="border: 1px #ccc solid;padding: 10px">选择文件:<input type="file" name="file"></div>
<br>
<input type="submit" value="上传" style="width: 20%;background: #999;border: 0;color: #fff;font-size: 14px;padding: 5px">
</form>
PHP代码:
//创建变量接收上传的文件
$fileInfo = $_FILES['file'];//接收上传文件(打印一下,看看有哪些信息要写进方法)
var_dump($_FILES['file']);//上传方法(注意:jpg/png/gif前面不要加.)
function upload_file($fileInfo, $upload = './upload', $imagesExt = ['jpg', 'png', 'gif'])
{
//上传错误号为0 表示上传成功
if ($fileInfo['error'] === 0) {
//获取文件后缀类型 JPG PNG...
$ext = strtolower(pathinfo($fileInfo['name'], PATHINFO_EXTENSION));
//判断上传的文件是否指定的类型
if (!in_array($ext, $imagesExt)) {
return '文件是非法类型';
}
//判断文件是否存在,不存在就创建
if (!is_dir($upload)) {
mkdir($upload, 0777, true);
}
//创建生成一个唯一的 ID 文件名;用md5为了编码; 拼接后缀
$filename = md5(uniqid(microtime(true), true)) . "." . $ext;
//拼接目标路径
$destname = $upload . "/" . $filename;
//移动并判断上传是否成功了(注意:move_uploaded_file,不是move_upload_file)
if (!move_uploaded_file($fileInfo['tmp_name'], $destname)) {
return "文件上传失败!";
}
return "文件上传成功!";
} else {
//123467表示上传失败及原因
switch ($fileInfo['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;
case 6:
echo '找不到临时文件';
break;
case 7:
echo '文件写入失败';
break;
}
}
}//调用上传的文件
//upload_file($fileInfo);//打印返回值看效果
var_dump(upload_file($fileInfo));
上传报的效果如下: