如何为上传到我网站的图片添加随机名称?

时间:2012-12-01 02:46:53

标签: php image random upload rename

所以我正在制作.gif上传网站,这是我的“upload_file.php”代码。

        <?php
    $allowedExts = array("jpg", "jpeg", "gif", "png");
    $extension = end(explode(".", $_FILES["file"]["name"]));
    if ((($_FILES["file"]["type"] == "image/gif"))
    && ($_FILES["file"]["size"] < 5242880)
    && in_array($extension, $allowedExts))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br>";
    echo "Type: " . $_FILES["file"]["type"] . "<br>";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";

    if (file_exists("i/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "i/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "i/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Invalid file";
  }
?> 

如何添加随机图片名称?最好只有#8-9的6-8位数字。这样图像名称很简单,而不是特定于大写字母等。请尽可能具体说明,因为我还在学习PHP,这是我制作这个网站的主要原因之一。

P.S。如果您可以告诉我如何在没有显示文件信息的页面的情况下直接重定向到图像,则可以获得奖励积分。

3 个答案:

答案 0 :(得分:1)

如何根据上传时间制作随机名称?

20121130184908.jpeg

那就是我写的那一刻(utc-0800)为2012-11-30 18:49:08

如果上传量很大,那么也许也应该包含毫秒数。

答案 1 :(得分:1)

**调用此函数生成文件名

function  makeFileName($size=6, $path="/", $extension=".gif"){
    //if you give a path, don't forget the slash at end

    $root = $_SERVER["DOCUMENT_ROOT"];        
    $name = rand(0, str_repeat(9, $size));
    $name = $root.$path.str_pad($name, 8,  0, STR_PAD_LEFT).$extension;
    while(is_file($name)){
        makeFileName();
    }
    return $path.$name; 
}
echo makeFileName();

//makeFileName(6, ".png") Will create a png file name with 6 digits

编辑:

move_uploaded_file($_FILES["file"]["tmp_name"], makeFileName(6, "/your/dir/", ".png"));

答案 2 :(得分:0)

你可以使用uniqid()我认为它会为你提供所需的东西