kostenloser Webspace werbefrei: lima-city


PHP File Upload Script Problem

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    jocko

    Kostenloser Webspace von jocko

    jocko hat kostenlosen Webspace.

    Halöchen
    ich habe folgendes PHP File Upload Script:
    <?php

    // Variabeln festlegen
    $max_byte_size = 2097152;
    $allowed_types = \"(jpg|jpeg|gif|png)\";

    // Formular wurde abgeschickt
    if($_POST[\"submit\"] == \"Upload\") {

    // Wurde wirklich eine Datei hochgeladen?
    if(is_uploaded_file($_FILES[\"file\"][\"tmp_name\"])) {

    // Gültige Endung? ($ = Am Ende des Dateinamens) (/i = Groß- Kleinschreibung nicht berücksichtigen)
    if(preg_match(\"/\\.\" . $allowed_types . \"$/i\", $_FILES[\"file\"][\"name\"])) {

    // Datei auch nicht zu groß
    if($_FILES[\"file\"][\"size\"] <= $max_byte_size) {

    // Alles OK -> Datei kopieren
    if(copy($_FILES[\"file\"][\"tmp_name\"], $_FILES[\"file\"][\"name\"])) {

    echo \"Datei erfolgreich hochgeladen!<br>\";
    echo \"Name: \" . $_FILES[\"file\"][\"name\"] . \"<br>\";
    echo \"Größe: \" . $_FILES[\"file\"][\"size\"] . \" Byte<br>\";
    echo \"MIME-Type: \" . $_FILES[\"file\"][\"type\"] . \"<br>\";
    echo \"Link: <a href=\\\"\" . $_FILES[\"file\"][\"name\"] . \"\\\">\" . $_FILES[\"file\"][\"name\"] . \"</a><br><br>\";
    echo \"Danke<br /><br />\";

    }
    else {

    echo \"Datei konnte nicht hochgeladen werden.\";

    }

    }
    else {

    echo \"Die Datei darf nur eine Größe von \" . $max_byte_size . \" Byte besitzen.\";

    }

    }
    else {

    echo \"Die Datei besitzt keine ungültige Endung.\";

    }

    }
    else {

    echo \"Keine Datei zum Hochladen angegeben.\";

    }

    }
    else {

    echo \"Bitte benutzen Sie das Upload Formular.\";

    }

    ?>


    Wo kann ich angeben,wo hin die Dateien sollen? Ich will es nicht im selben Ordner haben wie das Script..
    Wenn das nicht geht, habt ihr ein Script, wo das geht? Danke
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Mit:

    $pfad= \"/upload/files\";


    Der Pfad ist relativ zum Pfad der Homepage.
    In deinem Falle würden dann die hinaufgeladenen Dateien im Verzeichnis http://jocko.lima-city.de/upload/files/datei.endung landen.

    LG,
    Hellf1ghter
  4. Autor dieses Themas

    jocko

    Kostenloser Webspace von jocko

    jocko hat kostenlosen Webspace.

    Was muss ich denn machen, wenn ich ihn nicht relativ will?
    z.b. www.jocko.de ?
  5. also du kannst den upload immer nur relativ gestalten, da du ja schlecht sagen kannst ich lad einfach mal nen nettes video bei mmh www.google.de hoch, das geht sicherheitstechnich garnicht. also immer nur relative pfade.

    hier ist nen q-text den ich mal geschrieben hab, ist aber was her, also bei detailfragen dauerts was bis du ne passende antwort bekommst ;-)
    die datei: uploader.php:

    if(is_uploaded_file($_FILES[\'clientdatei\'][\'tmp_name\'])
         and ($_FILES[\'clientdatei\'][\'error\'] == 0))
      {
        move_uploaded_file($_FILES[\'clientdatei\'][\'tmp_name\'],\"include/php/upload/\".$_FILES[\'clientdatei\'][\'name\']);
        echo \"<h1>Dateiübertragung erfolgreich</h1>\";
        echo \"Die Datei wurde erfolgreich hochgeladen!<br>\\n\";
            $text = \"Die Datei wurde erfolgreich hochgeladen! \";
            $text.= \"Name: \".$_FILES[\'clientdatei\'][\'name\'];
        echo \"<b>Dateiname:</b> \",$_FILES[\'clientdatei\'][\'name\'],\"<br>\\n\";
        echo \"<b>Dateigröße:</b> \",$_FILES[\'clientdatei\'][\'size\'],\" Bytes<br>\\n\";
        echo \"<b>Temporärer Name:</b> \",$_FILES[\'clientdatei\'][\'tmp_name\'],\"<br>\\n\";
        echo \"<b>Dateityp:</b> \",$_FILES[\'clientdatei\'][\'type\'],\"<br>\\n\";
        echo \"<a href=\\\"include/php/upload/\".$_FILES[\'clientdatei\'][\'name\'].\"\\\">Datei anzeigen</a>\";
        echo \'<br> <a href=\"?page=intern\">Zurück</a>\';
      }
      else
      {
        echo \"<h1>Dateiübertragung misslungen</h1>\";
        echo \"Die Datei konnte nicht erfolgreich hochgeladen werden!<br>\\n\";
        switch($_FILES[\'clientdatei\'][\'error\'])
        {
          case 1:
            $text = \"<b>FEHLER #1:</b> Hochgeladene Datei zu groß!\";
            break;
          case 2:
            $text = \"<b>FEHLER #2:</b> Hochgeladene Datei zu groß!\";
            break;
          case 3:
            $text = \"<b>FEHLER #3:</b> Datei nur teilweise hochgeladen!\";
            break;
          case 4:
            $text = \"<b>FEHLER #4:</b> Es wurde keine Datei hochgeladen!\";
            break;
          default:
            $text = \"Unbekannter Fehler während der Übertragung!\";
            break;
        }
            echo $text;
      }


    und der aufruf in ner einfachen html datei:

    <form method=\"post\" action=\"index2.php?page=php/uploader&u=<? echo $_SESSION[\'benutzer\']; ?>\" enctype=\"multipart/form-data\">
                        <input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"2097152\">
                        Datei: <input type=\"file\" name=\"clientdatei\">
                        <input type=\"submit\" value=\"Hochladen\">
                        </form> max.Größe 2 MB

  6. sebastian-online

    sebastian-online hat kostenlosen Webspace.

    Hallo,

    jocko schrieb:
    Was muss ich denn machen, wenn ich ihn nicht relativ will?
    z.b. www.jocko.de ?


    Das ist nur möglich - soweit ich weiss-, wenn du per FTP darauf zugreifst. Das ist aber umständlich.

    Interessant ist hier die Methode move_uploaded_file().

    Sonst: In der Copymethode bedeuten zwei Punkte ein Ordner zurück und einen Ordnernamen mit einem Slash dahinter, dass in einem bestimmten Ordner gespeichert wird [ Ich bin mir aber nicht 100% sicher.].

    Gute Links:
    http://www.dynamic-webpages.de/php/function.move-uploaded-file.php
    http://www.dynamic-webpages.de/php/features.file-upload.php

    Mfg Sebastian
  7. Autor dieses Themas

    jocko

    Kostenloser Webspace von jocko

    jocko hat kostenlosen Webspace.

    Wie kann ich es denn machen,wenn ich will,dass auch ZIPDateien hochgeladen werden können? Hierzu müsste ich die Dateien auf den Downloadserver schicken können.
    Geht das wirklich nicht?

    Ich habe null ahnung von PHP.Deshalb wäre ich froh,wenn jemand mir einen Code basteln könnte..Danke.

    Beitrag geändert: 20.3.2008 19:20:39 von jocko
  8. m******1



    also du kannst den upload immer nur relativ gestalten, da du ja schlecht sagen kannst ich lad einfach mal nen nettes video bei mmh www.google.de hoch, das geht sicherheitstechnich garnicht. also immer nur relative pfade.

    hier ist nen q-text den ich mal geschrieben hab, ist aber was her, also bei detailfragen dauerts was bis du ne passende antwort bekommst ;-)
    die datei: uploader.php:

    if(is_uploaded_file($_FILES[\\\'clientdatei\\\'][\\\'tmp_name\\\'])
     and ($_FILES[\\\'clientdatei\\\'][\\\'error\\\'] == 0))
     {
     move_uploaded_file($_FILES[\\\'clientdatei\\\'][\\\'tmp_name\\\'],\\\'include/php/upload/\\\'.$_FILES[\\\'clientdatei\\\'][\\\'name\\\']);
     echo \\\'<h1>Dateiübertragung erfolgreich</h1>\\\';
     echo \\\'Die Datei wurde erfolgreich hochgeladen!<br>\\\\n\\\';
     $text = \\\'Die Datei wurde erfolgreich hochgeladen! \\\';
     $text.= \\\'Name: \\\'.$_FILES[\\\'clientdatei\\\'][\\\'name\\\'];
     echo \\\'<b>Dateiname:</b> \\\',$_FILES[\\\'clientdatei\\\'][\\\'name\\\'],\\\'<br>\\\\n\\\';
     echo \\\'<b>Dateigröße:</b> \\\',$_FILES[\\\'clientdatei\\\'][\\\'size\\\'],\\\' Bytes<br>\\\\n\\\';
     echo \\\'<b>Temporärer Name:</b> \\\',$_FILES[\\\'clientdatei\\\'][\\\'tmp_name\\\'],\\\'<br>\\\\n\\\';
     echo \\\'<b>Dateityp:</b> \\\',$_FILES[\\\'clientdatei\\\'][\\\'type\\\'],\\\'<br>\\\\n\\\';
     echo \\\'<a href=\\\\\\\'include/php/upload/\\\'.$_FILES[\\\'clientdatei\\\'][\\\'name\\\'].\\\'\\\\\\\'>Datei anzeigen</a>\\\';
     echo \\\'<br> <a href=\\\'?page=intern\\\'>Zurück</a>\\\';
     }
     else
     {
     echo \\\'<h1>Dateiübertragung misslungen</h1>\\\';
     echo \\\'Die Datei konnte nicht erfolgreich hochgeladen werden!<br>\\\\n\\\';
     switch($_FILES[\\\'clientdatei\\\'][\\\'error\\\'])
     {
     case 1:
     $text = \\\'<b>FEHLER #1:</b> Hochgeladene Datei zu groß!\\\';
     break;
     case 2:
     $text = \\\'<b>FEHLER #2:</b> Hochgeladene Datei zu groß!\\\';
     break;
     case 3:
     $text = \\\'<b>FEHLER #3:</b> Datei nur teilweise hochgeladen!\\\';
     break;
     case 4:
     $text = \\\'<b>FEHLER #4:</b> Es wurde keine Datei hochgeladen!\\\';
     break;
     default:
     $text = \\\'Unbekannter Fehler während der Übertragung!\\\';
     break;
     }
     echo $text;
     }


    und der aufruf in ner einfachen html datei:

    <form method=\\\'post\\\' action=\\\'index2.php?page=php/uploader&u=<? echo $_SESSION[\\\'benutzer\\\']; ?>\\\' enctype=\\\'multipart/form-data\\\'>
     <input type=\\\'hidden\\\' name=\\\'MAX_FILE_SIZE\\\' value=\\\'2097152\\\'>
     Datei: <input type=\\\'file\\\' name=\\\'clientdatei\\\'>
     <input type=\\\'submit\\\' value=\\\'Hochladen\\\'>
     </form> max.Größe 2 MB



    Kann es sein das man da Dateien/Ordner spezielle Rechte zuweisen muss? Mit den CHMOD-Rechten hab ich mich nie richtig befasst.
  9. stefanlachner

    stefanlachner hat kostenlosen Webspace.

    Ja, muss man!
    Ich kenn mich zwar nur ein bisschen mit Linux aus, aber soviel weiß ich:

    Das Kommando, das du ausführst, wird mir deinen SChreib/leserechten ausgeführt, d.h. du musst (z.B. mit chmod <Klasse><Operation><Zugriffsrecht> <Dateien/Verzeichnisse>) die Recht entsprechend setzen.

    mfg

    Stefan
  10. man kann den chmod auch über php machen. dann ändert man kurz für den upload die schreibrechte für einen ordner und nach dem hochladen stellt man sie wieder auf lesen. such grad ma den quelltext raus ...

    chmod($datei/ordnername,0777)
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!