Neueste Web-Entwicklung Tutorials
 

PHP 5 Datei-Upload


Mit PHP ist es einfach, Dateien auf den Server zu.

Doch mit Leichtigkeit Gefahr kommt, also immer vorsichtig sein, wenn das Hochladen von Dateien erlauben!


Konfigurieren Sie die "php.ini" Datei

Erstens, stellen Sie sicher, dass PHP-Datei-Uploads zu ermöglichen, konfiguriert ist.

In Ihrer "php.ini" Datei, suchen Sie nach der file_uploads Richtlinie, und setzen Sie sich auf On:

file_uploads = On

Erstellen Sie das HTML-Formular

Als Nächstes erstellen Sie ein HTML-Formular, die Benutzern erlauben, die Bilddatei sie hochladen möchten, wählen:

<!DOCTYPE html>
<html>
<body>

<form action="upload.php" method="post" enctype="multipart/form-data">
    Select image to upload:
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload Image" name="submit">
</form>

</body>
</html>

Einige Regeln für das HTML-Formular folgen oben:

  • Stellen Sie sicher, dass das Formular Methode verwendet = „post“
  • Das Formular muss auch das following Attribut: enctype = "multipart / form-data". Es gibt an, welchen Inhaltstyp zu verwenden, wenn die Form der Einreichung

Ohne die oben genannten Anforderungen, wird die Datei-Upload nicht funktionieren.

Andere Dinge zu bemerken:

  • Die type="file" Attribut des <input> -Tag zeigt das Eingabefeld als Datei-Auswahlsteuerung, mit einer "Browse" Schaltfläche neben die Eingabesteuerung

Das Formular oben sendet Daten in eine Datei namens "upload.php" , die wir als nächstes schaffen.


Erstellen Sie die Datei hochladen PHP Script

Die "upload.php" Datei enthält den Code für das Hochladen einer Datei:

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
}
?>

PHP-Skript erklärt:

  • $ target_dir = "uploads/" - gibt das Verzeichnis , wo die Datei werden wird gesetzt
  • $ Target_file gibt den Pfad der Datei hochgeladen werden
  • $ UploadOK = 1 ist noch nicht verwendet (will be used later)
  • $ ImageFileType hält die Dateierweiterung der Datei
  • Als nächstes prüfen, ob die Bilddatei ein tatsächliches Bild oder ein gefälschtes Bild ist

Hinweis: Sie müssen ein neues Verzeichnis erstellen namens "uploads" in dem Verzeichnis , in dem "upload.php" Datei befindet. Die hochgeladenen Dateien werden dort gespeichert.


Überprüfen Sie, ob Datei existiert bereits

Jetzt können wir einige Einschränkungen hinzufügen.

Zuerst überprüfen wir , ob die Datei bereits in der existiert "uploads" Ordner. Ist dies der Fall, wird eine Fehlermeldung angezeigt, und $ UploadOK auf 0 gesetzt ist:

// Check if file already exists
if (file_exists($target_file)) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
}

Limit Dateigröße

Das Dateieingabefeld in unserem HTML - Formular oben genannt wird "fileToUpload" .

Jetzt wollen wir die Größe der Datei überprüfen. Wenn die Datei größer als 500 KB ist, wird eine Fehlermeldung angezeigt, und $ UploadOK auf 0 gesetzt ist:

 // Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "Sorry, your file is too large.";
    $uploadOk = 0;
}

Limit Dateityp

Der folgende Code nur ermöglicht es Benutzern, JPG, JPEG, PNG und GIF-Dateien hochzuladen. Alle anderen Dateitypen gibt eine Fehlermeldung aus, bevor $ UploadOK auf 0 setzen:

// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk = 0;
}

Vollständiger Upload File PHP Script

Der komplette "upload.php" Datei sieht nun wie folgt aus :

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
}
// Check if file already exists
if (file_exists($target_file)) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "Sorry, your file is too large.";
    $uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
    echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
    } else {
        echo "Sorry, there was an error uploading your file.";
    }
}
?>

Füllen Sie PHP-Dateisystem Referenz

Für eine komplette Referenz der Dateisystem - Funktionen, gehen Sie auf unsere komplette PHP - Dateisystem Referenz .