Hallo PHPler,
ich habe mir heute ein kleines Dateiuploadscript geschrieben und hab dazu ein paar Fragen.
- 1. Wie kann ich festlegen das nur nur bestimmte Dateitypen bzw Dateien mit speziellen Endungen (z.B. .jpg .png) gespeichert werden.
- 2. Wie löse ich das Problem mit gleichen Dateinamen? (neuere Dateien überschreiben Alte mit dem selben Namen)
Vielen dank schon mal für eure Antworten
ich habe mir heute ein kleines Dateiuploadscript geschrieben und hab dazu ein paar Fragen.
- 1. Wie kann ich festlegen das nur nur bestimmte Dateitypen bzw Dateien mit speziellen Endungen (z.B. .jpg .png) gespeichert werden.
- 2. Wie löse ich das Problem mit gleichen Dateinamen? (neuere Dateien überschreiben Alte mit dem selben Namen)
Vielen dank schon mal für eure Antworten
PHP-Code:
<?php
// Prüfen des Arrays $_FILES;
if (isset($_FILES["datei"]))
{
//Upload-Status
if ($_FILES["datei"]["error"] == UPLOAD_ERR_OK)
{
//Muster zur Überprüfung der im Dateinnamen enthaltenen Zeichen (Optional)
$regEXP = "/^[a-z_]([a-z0-9_-]*\.?[a-z0-9_-])*\.[a-z]{3,4}$/i";
//Überprüfen von Dateinname und Dateigröße
if (preg_match($regEXP, $_FILES["datei"]["name"]) && $_FILES["datei"]["size"] > 0 && $_FILES["datei"]["size"] < 10000000)
{
//Temporäre Datei in das Zielverzeichnis des Servers verschieben
move_uploaded_file($_FILES["datei"]["tmp_name"], "user_files/" .$_FILES["datei"]["name"]);
//Namen speichern für spätere Übergabe für Bildausgabe
$dname = $_FILES["datei"]["name"];
//zusätzliche Infos in Arraysaufteilen
$dtype = $_FILES["datei"]["type"];
$dsize = $_FILES["datei"]["size"];
//Redirect zur Erfolgsmeldung + Dateinamenübergabe via Get
header("Location: datei_upload_status.php?dateiname=user_files/$dname&dtype=$dtype&dsize=$dsize Byte");
}
else
{
echo "<h1><center>Fehler im Dateinamen oder in der Dateigröße -> Limit: <u>10000 kb</u> !</center>";
}
}
else
{
echo "<h1><center>Fehler bei der Übertragung !</center>";
}
}
else
{
echo "<h1><center>Dateiupload Fehlgeschlagen</center>";
}
?>
Kommentar