0 Pluspunkte 0 Minuspunkte
Wie kann ich eine Datei mit PHP über ein Formular hochladen?
von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

Hier ein HTML Template

<!DOCTYPE html>
<html>
<head>
    <title>Datei-Upload mit PHP</title>
</head>
<body>
    <h1>Datei hochladen</h1>
    <form action="upload.php" method="POST" enctype="multipart/form-data">
        <input type="file" name="fileToUpload" id="fileToUpload">
        <input type="submit" value="Hochladen" name="submit">
    </form>
</body>
</html>

und ein PHP Script das den Upload durchführt.

<?php
$targetDir = "uploads/";
$targetFile = $targetDir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));

// Prüfen, ob es sich um eine echte Datei handelt
if (isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if ($check !== false) {
        echo "Datei ist eine Bilddatei - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "Datei ist keine Bilddatei.";
        $uploadOk = 0;
    }
}

// Prüfen auf Dateigröße
if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "Sorry, Ihre Datei ist zu groß.";
    $uploadOk = 0;
}

// Dateitypen begrenzen (hier auf Bilder beschränkt)
if ($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
    && $imageFileType != "gif") {
    echo "Sorry, nur JPG, JPEG, PNG & GIF Dateien sind erlaubt.";
    $uploadOk = 0;
}

// Überprüfen, ob $uploadOk auf 0 gesetzt wurde (Fehler bei der Validierung)
if ($uploadOk == 0) {
    echo "Ihre Datei wurde nicht hochgeladen.";
// Alles in Ordnung, versuche die Datei hochzuladen
} else {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $targetFile)) {
        echo "Die Datei " . htmlspecialchars(basename($_FILES["fileToUpload"]["name"])) . " wurde hochgeladen.";
    } else {
        echo "Es gab einen Fehler beim Hochladen Ihrer Datei.";
    }
}
?>
von