Sonntag, Mai 31, 2020

PHP Datei-upload auf localhost

Bin ich über einen Apache-Server, es funktioniert auf localhost.
Ich weiß nicht, php also habe ich versucht den code von w3schools-Website, aber ich kann nicht damit es funktioniert.

Hier ist der HTML-code :

<!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>

Den PHP-code :

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
echo $target_file;
$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;
    }
}
?>

Den echo-Befehl in den Anfang der php-code gibt nur „uploads/“ also ich denke mal das $_FILES funktioniert nicht richtig.

EDIT2

Habe ich neu installiert, Apache mit XAMPP diese Zeit und ich habe kein problem mehr mit dem code(es gibt „- Datei ist ein Bild“), aber es ist immer noch keine Datei hochgeladen in meinem „uploads“ – Ordner. Meine „uploads“ – Ordner ist im gleichen Ordner als meine web-Seite in localhost.

Ich bin mit der default php.ini (file_uploads = on).
Ich habe versucht, verschiedene Dateien unterschiedlicher Größe aus verschiedenen Verzeichnissen, aber bisher ohne Erfolg.

  • Hast u erstellt uploads Ordner im gleichen Verzeichnis, in dem Sie arbeiten ?
  • Also was ist dein problem?
  • Ich bearbeitete meinen letzten Satz : Den echo-Befehl in den Anfang der php-code gibt nur „uploads/“ also ich denke mal das $_FILES funktioniert nicht richtig.
  • Zum Debuggen, führen Sie bitte var_dump($_FILES) statt echo $target_file. Geben Sie auch mehr details als „geht nicht“ wenn Sie wollen mehr Lösungen als „fix your code“.
  • Sorry, ich meinte, dass das mit dem Namen anzeigen soll, aber es ist leer. Ich habe versucht, Ihre debug-code, und es gibt array(0) { }
  • geben Sie eine Bild Beschreibung hierMein name ist Khalis und ich bin high-school-Schüler, ich weiß nur nicht, was zu tun ist, denn ich kann nicht mein problem lösen … also ging ich hier für Sie Fragen.. also wie gesagt ich bin Schüler und mein Kurs ist IKT im stucking machen Seite hochladen und ich hoffe wirklich, dass Ihr es lösen kann … bin ich von der Malaysischen ich hoffe, Sie verstehen mein code… ich möchte nur zu überprüfen mine-code, die ich getan habe … ich benutzte dreamweaver um das system…[](i.stack.imgur.com/Xtb4U.png)

InformationsquelleAutor oro777 | 2016-07-13

2 Kommentare

  1. 2

    Bearbeitet

    Diese sollte funktionieren. Für den content-length-Warnung, müssen Sie Bearbeiten Sie Ihre php.ini-Datei.

    php.ini

    Bearbeiten Sie diese 2 Zeilen.

    post_max_size = 200M

    upload_max_filesize = 200M

    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">
    </form>
    </body>
    </html>

    upload.php

    <?php
    if (!empty($_FILES) && isset($_FILES['fileToUpload'])) {
        switch ($_FILES['fileToUpload']["error"]) {
            case UPLOAD_ERR_OK:
                $target = "upload/";
                $target = $target . basename($_FILES['fileToUpload']['name']);
    
                if (move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $target)) {
                    $status = "The file " . basename($_FILES['fileToUpload']['name']) . " has been uploaded";
                    $imageFileType = pathinfo($target, PATHINFO_EXTENSION);
                    $check = getimagesize($target);
                    if ($check !== false) {
                        echo "File is an image - " . $check["mime"] . ".<br>";
                        $uploadOk = 1;
                    } else {
                        echo "File is not an image.<br>";
                        $uploadOk = 0;
                    }
    
                } else {
                    $status = "Sorry, there was a problem uploading your file.";
                }
                break;
    
        }
    
        echo "Status: {$status}<br/>\n";
    
    }
    • Ich habe versucht, ändern Sie das Ziel Verzeichnis c:/uploads aber nichts hochlädt. Die Konsole von meinem browser ist leer und wie ich schon schrieb, das echo ist leer für die Dateinamen.
    • Gebt mir eine Weile, versuche ich meine Seite erstmal arbeiten bevor Sie mit der Bearbeitung meiner Antwort
    • Bitte geben Sie diese änderungen zu versuchen und aktualisieren Sie mich über das Ergebnis oder eventuelle Fehler.
    • Vielen Dank für das update, aber ich bekam die folgende Fehlermeldung in meinem Chrome console : Failed to load resource: the server responded with a status of 500 (Internal Server Error)
    • href=“http://stackoverflow.com/a/19180823/6385066″>stackoverflow.com/a/19180823/6385066 „500 code würde normalerweise zeigen Sie einen Fehler auf dem server, nicht etwas mit deinem code.“ Sie sollten überprüfen Sie die Protokolle.
    • Ja, ich denke, der code ist korrekt, aber auch im Apache-log wird nicht aktualisiert, nur der Zugang.log ist. (GET-und POST-Befehls-Informationen, aber nichts über den Fehler)
    • Nach der Neuinstallation von Apache mit XAMPP habe ich es geschafft, dass Ihr code funktioniert ! Danke für Eure Hilfe.

  2. 0

    Geben Sie den code, funktioniert einwandfrei.
    Ich habe gerade überprüft es

    uploads/untitled.pngFile is an image - image/png.

    So dass Sie wahrscheinlich fehlt noch etwas.

    Liste der Dateien, die Sie verwenden, und Ihre vollständige code

Kostenlose Online-Tests