【问题标题】:PHP - Rename and upload a file if it existsPHP - 重命名并上传文件(如果存在)
【发布时间】:2016-09-12 12:27:29
【问题描述】:

我最近一直在学习用 PHP 构建一个图片库上传器。在将文件上传到我的上传文件夹之前,我似乎无法弄清楚我实际上是如何重命名文件的。任何人都可以帮助我吗?

这是我目前所拥有的。

if(isset($_POST['submit'])) {
$allowedExts = array("gif", "jpeg", "jpg", "png","GIF","JPEG","JPG","PNG");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& in_array($extension, $allowedExts)) {

  if ($_FILES["file"]["error"] > 0) {
    echo "Invalid File Type";
  } else {

    $target = "../upload/";
    $name = addslashes($_FILES['file']["name"]);

    if(file_exists('../upload/' . $name)) {
        $explode = explode('.', $name); 
        $img = $explode[0];
        $ex = $explode[1];
        $i = 1;
        $new = $img . '_' . $i . '.' . $ex;

        while (file_exists('../upload/' . $new)) {
          $i++;
          $new = $img . '_' . $i . '.' . $ex;
        }

        // RENAME FILE HERE? 

    } 
      move_uploaded_file($_FILES["file"]["tmp_name"], $target. $_FILES["file"]["name"]);
}

} else {
  echo "Error uploading image";
  die();
}

}

因此,在我的 while 循环之后,我想重命名文件,然后使用 move_uploaded_file() 函数将其移动到我的“上传”目录中。我能做到这一点的最好方法是什么?

谢谢

【问题讨论】:

    标签: php


    【解决方案1】:

    当您调用 move_file_upload 时,您可以简单地将新文件的名称作为第二个参数,我知道文档没有说明这一点,但它可以工作。

    move_uploaded_file($_FILES["file"]["tmp_name"], $target. $_FILES["file"]["name"]);
    

    所以你会做类似的事情

    move_uploaded_file($_FILES["file"]["tmp_name"], $target. $_FILES["file"]["name"] . "Some random string to be added to the filename");
    

    或者,如果您想完全忽略以前的文件名,只需将其从您的第二个参数中删除即可。

    move_uploaded_file($_FILES["file"]["tmp_name"], $target. "new file name here");
    

    【讨论】:

    • 啊,现在说得通了!我会将其标记为答案。谢谢你的帮助! :)
    • 没问题,如前所述,文档对文件的重命名不是很清楚,但这就是它的实现方式
    【解决方案2】:

    为什么不同时做呢?

    您可以在移动时重命名它。只需提供新文件名作为move_uploaded_file() 的第二个参数。

    move_uploaded_file($_FILES["file"]["tmp_name"], $target . $new);
    

    【讨论】:

      猜你喜欢
      • 2017-02-20
      • 2013-09-29
      • 2015-03-18
      • 2014-08-09
      • 1970-01-01
      • 1970-01-01
      • 2013-07-02
      • 2021-10-25
      • 2014-01-15
      相关资源
      最近更新 更多