
George Edward Portillo
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 in das Verzeichnis speichert, und das ist auch meine Vermutung move_uploaded_file() ist derjenige, der den Namen dafür festlegt.
Wie kann ich den Namen meiner Datei in eine Zufallszahl ändern?
Ich habe es im Folgenden 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 die zu ändern $_FILES[“file”][“name”] und ersetzen Sie es durch die $Dateiname; Variable, damit der neue Name gespeichert werden kann.

Ben Glück
Sie können den Namen der Datei einfach ändern, indem Sie den Namen der Datei im zweiten Parameter von ändern move_uploaded_file
.
Anstatt
move_uploaded_file($_FILES["file"]["tmp_name"], "../img/imageDirectory/" . $_FILES["file"]["name"]);
Verwenden
$temp = explode(".", $_FILES["file"]["name"]);
$newfilename = round(microtime(true)) . '.' . end($temp);
move_uploaded_file($_FILES["file"]["tmp_name"], "../img/imageDirectory/" . $newfilename);
Geändert, um Ihre Frage widerzuspiegeln, wird eine Zufallszahl basierend auf der aktuellen Zeit erstellt und die Erweiterung aus der ursprünglich hochgeladenen Datei angehängt.
Sie vermuten richtig. Lesen Sie die Handbuchseite für move_uploaded_file
. Stellen Sie den zweiten Parameter auf den Ort ein, an dem Sie die Datei speichern möchten.
Wenn es nicht funktioniert, stimmt etwas mit deinem nicht $fileName
. Bitte poste deinen aktuellsten Code.
Sie können dies versuchen,
$newfilename= date('dmYHis').str_replace(" ", "", basename($_FILES["file"]["name"]));
move_uploaded_file($_FILES["file"]["tmp_name"], "../img/imageDirectory/" . $newfilename);

Vorliebe
/* create new name file */
$filename = uniqid() . "-" . time(); // 5dab1961e93a7-1571494241
$extension = pathinfo( $_FILES["file"]["name"], PATHINFO_EXTENSION ); // jpg
$basename = $filename . "." . $extension; // 5dab1961e93a7_1571494241.jpg
$source = $_FILES["file"]["tmp_name"];
$destination = "../img/imageDirectory/{$basename}";
/* move the file */
move_uploaded_file( $source, $destination );
echo "Stored in: {$destination}";
Die move_uploaded_file
wird false zurückgeben, wenn die Datei nicht erfolgreich verschoben wurde. Sie können etwas in Ihren Code einfügen, um Sie in einem Protokoll zu warnen, wenn dies passiert, das sollte Ihnen helfen, herauszufinden, warum Sie Probleme beim Umbenennen der Datei haben
9886100cookie-checkWie benenne ich eine hochgeladene Datei um, bevor ich sie in einem Verzeichnis speichere?yes