【PHP】根据md5值上传文件生成文件名

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识别图片,同样图片,无论上传多少次,最终只保存一个
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值