Ankündigung

Einklappen
Keine Ankündigung bisher.

File Upload funktioniert nicht

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • File Upload funktioniert nicht

    Guten Tag,

    ich versuche gerade per HTML und PHP eine Datei auf meinen Ubuntu Server zu laden. Dies funktioniert allerdings nicht wie gewollt.

    HTML:
    HTML-Code:
    <!DOCTYPE HTML>
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">
    </head>
    <body>
    
    <form enctype="multipart/form-data" method="post" action="php.php">
        <span class="bold">Visitenkarte hochladen:</span>
        <input type="file" name="visitenkarte">
        <input type="submit" />
    </form>
    
    </body>
    </html>
    PHP:
    PHP-Code:
    <?php

    // Codierung auf UTF-8 setzen
    header("Content-Type: text/plain; charset=utf-8");

    $uploaddir "/var/www/html/messe/visitenkarten/"// Uploadverzeichnis für Visitenkarten

    echo "<pre>";
    print_r($HTTP_POST_FILES);
    echo 
    "</pre>";

    try {
        
    // Datei auf Gültigkeit überprüfen
        
    if (!isset($_FILES['upfile']['error']))
        {
            throw new 
    RuntimeException('Debug: isset = false; \n');
        }
        else if (
    is_array($_FILES['upfile']['error']))
        {
            throw new 
    RuntimeException('Debug: is_array = true; \n');
        }

        
    // Auf Fehler prüfen
        
    switch ($_FILES['upfile']['error']) {
            case 
    UPLOAD_ERR_OK:
                break;
            case 
    UPLOAD_ERR_NO_FILE:
                throw new 
    RuntimeException('Keine Datei hochgeladen.\n');
            case 
    UPLOAD_ERR_INI_SIZE:
            case 
    UPLOAD_ERR_FORM_SIZE:
                throw new 
    RuntimeException('Datei zu groß.\n');
            default:
                throw new 
    RuntimeException('Unbekannter Fehler.\n');
        }

        
    // Dateigröße prüfen
        
    if ($_FILES['upfile']['size'] > 1000000) {
            throw new 
    RuntimeException('Datei zu groß.\n');
        }

        
    // Dateityp prüfen
        
    $finfo = new finfo(FILEINFO_MIME_TYPE);
        if (
    false === $ext array_search(
            
    $finfo->file($_FILES['upfile']['tmp_name']),
            array(
                
    'jpg' => 'image/jpeg',
                
    'png' => 'image/png',
                
    'gif' => 'image/gif',
            ),
            
    true
        
    )) {
            throw new 
    RuntimeException('Ungültiges Dateiformat.\n');
        }

        
    // Datei verschieben
        
    if (!move_uploaded_file(
            
    $_FILES['upfile']['tmp_name'],
            
    sprintf($uploaddir '%s.%s',
                
    sha1_file($_FILES['upfile']['tmp_name']),
                
    $ext
            
    )
        )) {
            throw new 
    RuntimeException('Datei konnte nicht verschoben werden.\n');
        }

        echo 
    'Datei wurde erfolgreich hochgeladen.\n';

    } catch (
    RuntimeException $e) {

        echo 
    $e->getMessage();

    }

    echo 
    "<pre>";print_r($_FILES); echo "</pre>";
    ?>
    Output auf der Seite:
    Code:
       
     <pre></pre>Debug: isset = false; \n<pre>Array (     [visitenkarte] => Array         (             [name] => logo.jpg             [type] => image/jpeg             [tmp_name] => /var/www/html/uploads/phpOjR028             [error] => 0             [size] => 41416         )  )
    Könnt ihr mir da weiterhelfen?

  • #2
    Du hast haufenweise Fehler drinnen... Bitte schau dir das Beispiel dazu in der Doku genau an: http://php.net/manual/de/features.fi...ost-method.php

    - anderer Name im form Attribut als im $_FILES Array
    - move_uploaded_file() wird nicht genutzt
    - $HTTP_POST_FILES [veraltet, nicht empfohlen] -> Was willst du also damit?
    etc...
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Habe das Beispiel in der Doc bereits ausprobiert, hatte damit allerdings auch keinen Erfolg.
      Hier der neue Code:
      PHP-Code:
      <?php

      // Codierung auf UTF-8 setzen
      header("Content-Type: text/plain; charset=utf-8");

      $uploaddir "/var/www/html/messe/visitenkarten/"// Uploadverzeichnis für Visitenkarten


      $uploadfile $uploaddir basename($_FILES['userfile']['name']);

      echo 
      '<pre>';
      if (
      move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
          echo 
      "Datei ist valide und wurde erfolgreich hochgeladen.\n";
      } else {
          echo 
      "Möglicherweise eine Dateiupload-Attacke!\n";
      }
      ?>
      Output:
      Code:
       
       <pre></pre><pre>Möglicherweise eine Dateiupload-Attacke! Weitere Debugging Informationen:Array (     [visitenkarte] => Array         (             [name] => logo.jpg             [type] => image/jpeg             [tmp_name] => /var/www/html/uploads/php78D7MG             [error] => 0             [size] => 41416         )  ) </pre>

      Kommentar


      • #4
        Aha.

        Und das Form dazu?

        PHP-Code:
          <input type="file" name="visitenkarte"
        Wenn dein Form immer noch wie oben aussieht ist es klar.
        The string "()()" is not palindrom but the String "())(" is.

        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          Ein Tutorial zum Fileupload.

          Kommentar


          • #6
            Zitat von hausl Beitrag anzeigen
            Aha.

            Und das Form dazu?



            Wenn dein Form immer noch wie oben aussieht ist es klar.
            Okay habe meinen Fehler gesehen. Ich weiß nicht wie viele Stunden ich versucht habe das zu fixen und dann sowas dummes... ^^
            Vielen Dank! Funktioniert einwandfrei!

            Kommentar

            Lädt...
            X