设为首页收藏本站
查看: 62|回复: 0

[PHP] 六种PHP图片上传重命名提案研究与总结

[复制链接]

论坛元老

Rank: 6Rank: 6

积分
34274
主题
17031
UID
1347
M币
67
贡献
17176

  • 发表于 2014-3-29 12:33:00 | 显示全部楼层 |阅读模式
    六种PHP图片上传重命名方案研究与总结
      一、适用场景 无法使用从数据库中返回的自增长数字,给上传图片重命名。
    这是图片或文件上传的流程决定的。一般图片上传处理过程是,先上传图片到服务器,重命名之后,插入到数据库。
    ?
    也就是说,在数据库中非常容易获得的自增长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);// "}" return $uuid; } } ?
    2、MD5
    与guid一样会输出32字符十六进制数,区别是guid是随机产生的,md5需要根据输入的数据生成。
    例子:
      ?
    输出:
      8b1a9953c4611296a827abf8c47804d7
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    在我站开通SVIP可同时获得17个站点VIP资源 立即登录 立即注册
    快速回复 返回顶部 返回列表