background image

PHP 源码:种方法实现 php 上传图片重命名

本篇文章介绍了,在 php 中上传图片重命名的 6 种解决方法的详细说明,需要的朋友参
考下
一,适用场景:无法使用从数据库中返回的自增长数字,给上传图片重命名。
这是图片或文件上传的流程决定的。
一般图片上传处理过程是,先上传图片到服务器,重命名之后,插入到数据库。
也就是说,在数据库中非常容易获得的自增长 id,无法用于给上传的图片重命名,来避
免文件名称的重复,
而采用从数据库中获取最大 id 加 1 的方式,增加了数据库连接的次数,不适用于高并发
和数据量巨大的情况;
二,常规方案:
1,guid:32 字符十六进制数。
格式:GUID 

的格式为 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”

 

,其中每个 x 是 

0-9 

 

或 a-f 范围内的一个 32 位十六进制数。例如: 6F9619FF-8B86-D011-B42D-

00C04FC964FF 

 

即为有效的 GUID 值。

优点:几乎不会重复;
缺点:对于给上传的图片重命名,还是过长了。
用法:
代码如下:

/*
com_create_guid()是 php5 版本支持的功能,对于不支持的版本,可以自己进行定义;
*/
function guid(){
if (function_exists('com_create_guid')){
return com_create_guid();
}else{
mt_srand((double)microtime()*10000);//optional for php 4.2.0 and up.
echo(mt_rand());
$charid = strtoupper(md5(uniqid(rand(), true)));
$hyphen = chr(45);// "-"
$uuid = chr(123)// "{"
.substr($charid, 0, 8).$hyphen
.substr($charid, 8, 4).$hyphen
.substr($charid,12, 4).$hyphen
.substr($charid,16, 4).$hyphen
.substr($charid,20,12)
.chr(125);// "}"