Ich muss Benutzern erlauben, mehrere Dateien hochzuladen und dann den Dateinamen über ein Dropdown-Menü auswählen. Die Dateien werden für die Website meiner Schulen verwendet und die Dateien müssen mit Kurscodes benannt werden. Leider fälschen Benutzer häufig falsche Namen, damit ich ihnen erlauben kann, Dateien hochzuladen und den Kurs auszuwählen. Der Plan ist, sie automatisch so umzubenennen, dass der Code korrekt ist. Benutzer wählen ihren Namen und laden dann Dateien hoch, so dass ihre Uploads in einen eigenen Ordner gehen.Wie benutze ich php zum Hochladen und Umbenennen mehrerer Dateien über ein Dropdown-Menü für die Dateinamen?
Ich kann es für eine Datei tun, aber ich muss es für mehr als eine Datei tun können. Ich kann mehrere Dateien hochladen, kann sie aber anscheinend nicht umbenennen. Das Problem ist, dass ich nicht weiß, wie man mehrere neue Dateinamen mit dem Array verbindet, das mit $ _FILES erstellt werden kann
Hier ist der Code zum Hochladen und Umbenennen einer einzelnen Datei (es verwendet .jpg-Dateien, aber wird geändert um PDF-Dateien zu gegebener Zeit) ...
<?php
// Makes directory and changes file name for one file
if ($_SERVER["REQUEST_METHOD"] == "POST") {
\t
\t $uploads = $_POST['name'];
\t if (!is_dir($uploads))
\t {
\t \t mkdir($uploads);
\t }
\t
\t $info = pathinfo($_FILES['userFile']['name']);
\t $ext = $info['extension']; // get the extension of the file
\t $newname = $_POST['new_name'].".".$ext;
\t $target = $uploads.'/'.$newname;
\t move_uploaded_file($_FILES['userFile']['tmp_name'], $target);
\t
}
?>
<form name="UploadForm" enctype="multipart/form-data" method="post">
<p>
Find the file(s) you want to upload and click the "Upload" button below.
\t </p>
\t <p>
\t <b>Teacher Code:</b>
\t \t <select name="name">
\t \t \t <option value="Mr_A">Mr A</option>
\t \t \t <option value="Mr_B">Mr_B</option>
\t \t \t <option value="Mr_C">Mr C</option>
\t \t </select>
\t </p>
\t
\t <p>Select the course from the box and then select the .pdf outline...</p>
\t \t <p>
\t \t
\t \t <select name="new_name">
\t \t \t <option value="">Choose...</option>
\t \t \t <option value="L1PROG01">Programming - Level 1</option>
\t \t \t <option value="L2PROG01">Programming - Level 2</option>
\t \t \t <option value="L3PROG01">Programming - Level 3</option>
\t \t \t <option value="L1WEBD01">Web Design - Level 1</option>
\t \t \t <option value="L2WEBD01">Web Design - Level 2</option>
\t \t \t <option value="L3WEBD01">Web Design - Level 3</option>
\t \t </select>
\t \t
\t \t <input name="userFile" type="file" />
\t \t
\t \t </p>
\t \t
<br/>Check this box <input autocomplete="off" type="checkbox" checked name="overwrite" /> to <strong>overwrite</strong> existing files.
<input type="submit" value="Upload" />
</form>
Entschuldigung - das obige funktioniert nicht für mich. Sie verschiebt die Dateien in den 'uploads' Ordner, ruft aber die Datei 'new_name.jpg'. Die gute Nachricht ist, dass Dateien umbenannt werden. Die schlechte Nachricht ist, dass ich immer noch nicht weiß, wie ich die Datei umbenennen soll, damit sie mit dem Wert übereinstimmt, den meine Benutzer aus dem Dropdown-Menü ausgewählt haben. –
füge eine rand() Nummer mit dem neuen Namen hinzu, wenn du den gleichen Namen für alle Füllungen eingibst – Mani
Der Code den du mir gegeben hast war großartig - es fehlte nur ein bisschen im HTML (die eckigen Klammern nach 'neuer_name') . Ich habe auch den PHP so optimiert, dass er sowohl den Dateinamen als auch die Datei aus dem Formular erhält, das meine Benutzer ausfüllen. Ich habe den Arbeitscode unten gepostet, falls andere ein ähnliches Problem haben. Ich musste verschiedene Namen für meine Dateien haben, was die Sache ein wenig kompliziert machte. –