wake-up-neo.com

Wie kann eine hochgeladene Datei umbenannt werden, bevor sie in einem Verzeichnis gespeichert wird?

Unten ist der Code, den ich verwendet habe, um Dateien in ein Verzeichnis hochzuladen. Es funktioniert gut ... Meine Hauptfrage ist:

move_uploaded_file () ist derjenige, der die hochgeladene Datei im Verzeichnis speichert, und ich vermute auch, dass move_uploaded_file () der Name ist, der den Namen setzt.

Wie kann ich den Namen meiner Datei in eine Zufallszahl ändern?

Ich habe es unten versucht:

      $allowedExts = array("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"))
      && ($_FILES["file"]["size"] < 100000)
      && in_array($extension, $allowedExts))
        {
        if ($_FILES["file"]["error"] > 0)
          {
          echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
          }
        else 
          {

            $fileName = $temp[0].".".$temp[1];
            $temp[0] = Rand(0, 3000); //Set to random number
            $fileName;

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

Ich habe versucht, Variablen wie $ _FILES ["file"] ["name"] zu ändern und durch den $ fileName zu ersetzen. variable, damit der neue Name gespeichert werden kann.

Sie können den Namen der Datei einfach ändern, indem Sie den Namen der Datei im zweiten Parameter von move_uploaded_file ändern.

Anstatt

move_uploaded_file($_FILES["file"]["tmp_name"], "../img/imageDirectory/" . $_FILES["file"]["name"]);

Benutzen

$temp = explode(".", $_FILES["file"]["name"]);
$newfilename = round(microtime(true)) . '.' . end($temp);
move_uploaded_file($_FILES["file"]["tmp_name"], "../img/imageDirectory/" . $newfilename);

Nach der Änderung Ihrer Frage wird eine Zufallszahl basierend auf der aktuellen Uhrzeit erzeugt und die Erweiterung an die ursprünglich hochgeladene Datei angehängt. 

129
Ben Fortune

Sie können dies versuchen,

$newfilename= date('dmYHis').str_replace(" ", "", basename($_FILES["file"]["name"]));

move_uploaded_file($_FILES["file"]["tmp_name"], "../img/imageDirectory/" . $newfilename);
3
Prabhagaran

Sie raten richtig. Lesen Sie die Handbuchseite für move_uploaded_file . Stellen Sie den zweiten Parameter auf den Speicherort der Datei ein.

Wenn es nicht funktioniert, stimmt etwas nicht mit Ihrem $fileName. Bitte posten Sie Ihren neuesten Code.

1
tmh

move_uploaded_file gibt false zurück, wenn die Datei nicht erfolgreich verschoben wurde. Sie können etwas in Ihren Code einfügen, um Sie in einem Protokoll darauf aufmerksam zu machen. In diesem Fall sollten Sie feststellen, warum Sie Probleme beim Umbenennen haben

0
Yehuda Schwartz