通过表单上传图片是网站开发中经常需要的功能,并且为避免相同文件名上传覆盖掉之前的文件还需要将上传的图片重新命名。图片上传的方法有很多种,包括用框架或插件上传,但底层实现原理都是一样的,下面简单介绍一下原生PHP中图片上传并重命名的实现原理:
<?php
// PHP图片上传并重命名简单方法
// 获取上传文件
$file = $_FILES['file'];
// 获取上传文件名
$fileName = $file['name'];
// 反转文件名并以.符号分割文件名
$fileNameExp = explode('.',strrev($fileName));
// 反转文件名并转换为小写得到文件后缀
$fileEx = strtolower(strrev($fileNameExp[0]));
// 定义文件上传目录,date('Ymd/')为以当前日期年月日为命名的目录
$uploadPath = '../uploads/images/'.date('Ymd/');
// 以时间戳和随机数组合成新文件名包括后缀名
$fileNewName = time().rand(100,999).'.'.$fileEx;
// 判断文件是否通过文件表单上传
if(is_uploaded_file($file['tmp_name'])){
// 判断当前日期命名的目录是否存在
if(!is_dir($uploadPath)){
// 如果不存在则创建目录
mkdir($uploadPath,0777,true);
// 移动文件到上传目录
if(move_uploaded_file($file['tmp_name'],$uploadPath.$fileNewName)){
// 组合成最终包括目录在内的文件完整路径
$fileFinal = substr_replace($uploadPath,'',0,2).$fileNewName;
echo "文件{$fileFinal}上传成功!";
}else{
echo '文件上传错误!';
exit;
}
}else{
// 移动文件到上传目录
if(move_uploaded_file($file['tmp_name'],$uploadPath.$fileNewName)){
// 组合成最终包括目录在内的文件完整路径
$fileFinal = substr_replace($uploadPath,'',0,2).$fileNewName;
echo "文件{$fileFinal}上传成功!";
}else{
echo '文件上传错误!';
exit;
}
}
}else{
echo '文件上传错误!';
exit;
}
本站原创内容,如需转载请注明来源:https://www.liutonghui.com/66.html
评论列表(0条)
暂时没有评论!