代码之家  ›  专栏  ›  技术社区  ›  user2905791

是否更改上传图像名称中的字符数?子字符串

  •  0
  • user2905791  · 技术社区  · 11 年前

    我有一个网站,你可以上传图片。它工作得很好,但上传的图像名称太长了-“swag_526 abccf5e2bcd2d2000e3f9.jpg” 我希望在“swag_”部分之后将其缩短为8个字符。

       function SaveUploadFile($file, $dir, $resize=TRUE, $maxw=0, $maxh=0, $quality=75)
    {
        if(!$GLOBALS['image_verification']) $resize = FALSE;
    
        if ($file['tmp_name'])
        {
            $dotpos = strrpos($file['name'], ".");
    
            if ($dotpos) $ext = strtolower(substr($file['name'], $dotpos));
            else $ext = "";
    
            $newname = uniqid("swag_") . substr(md5($file['name']), 5, 12) . $ext;
    
            if ($resize && ($ext==".jpg" || $ext==".jpeg" || $ext==".jfif")) $copysuccess = SaveResizedJPG($file['tmp_name'], "$dir/$newname", $maxw, $maxh, $quality);
            else $copysuccess = copy($file['tmp_name'], "$dir/$newname");
    
            if ($copysuccess)
                $ret = $newname;
            else
                return "";
    
            unlink($file['tmp_name']);
            return $ret;
        }
        else
        {
            return "";
        }
    

    我认为这与newname后面的数字5和12有关?

    $newname = uniqid("swag_") . substr(md5($file['name']), 5, 12) . $ext;
    

    ,但我不知道如何改变这一点以获得我想要的结果。 谢谢你的帮助

    1 回复  |  直到 11 年前
        1
  •  1
  •   Petros Mastrantonas    11 年前
    substr(md5($file['name']), 5, 12) 
    

    这意味着,计算$file['name']的md5总和,然后从字符5开始,取下12个字符并将其用作文件名。

    如果您想更改图像名称中使用的字符数量,只需使用这些数字即可。从降低12开始,可能降低到8,如下所示:

    substr(md5($file['name']), 5, 8) 
    

    也许更少,试试看,否则你将如何了解这些东西:-) 这也有助于:

    http://www.php.net/manual/en/function.substr.php

    编辑: 好吧,我刚刚看到你在使用uniqid。如果只需要8个字符,可以完全删除md5部分:

    $newname = substr(uniqid("swag_"), 0, 13) . $ext;