html代码
创建文件 index.html
<body>
<form action="file.php" method="POST" enctype="multipart/form-data">
<input type="file" id="file" name="file">
<input type="submit">
</form>
</body>
php代码
创建文件 file.php
<?php
// 获取文件临时路径
$tmp_file = $_FILES['file']['tmp_name'];
// 获取文件md5值
$md5 = md5_file($tmp_file);
// 获取文件后缀
$file_ext = explode(".", trim(strtolower($_FILES['file']['name'])));
$file_ext = array_pop($file_ext);
// 生成文件保存目录(取md5值0-2位)
$dir = "uploads/" . substr(ltrim($md5), 0, 2) . '/';
if (!file_exists($dir)) {
mkdir($dir, 0755, true);
}
// 生成文件名称 (取md5值的第3位到结束)
$save_name = substr($md5, 2) . '.' . $file_ext;
$save_path = $dir . $save_name;
// 上传文件到刚刚生成的目录
if (move_uploaded_file($tmp_file, $save_path)) {
echo '上传成功! 路径:' . $save_path;
} else {
echo '上传失败';
}
die;
?>
最终效果:
上传图片
文件md5长度是32位,其中目录占2位,名称占30位
通过md5识别图片,同样图片,无论上传多少次,最终只保存一个