Datei-Namen und Pfad aus INPUT lesen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Datei-Namen und Pfad aus INPUT lesen

    Hallo,

    ich habe folgendes Formular:

    Quellcode

    1. <?php echo '<form action="'.htmlentities($_SERVER['REQUEST_URI']).'" enctype="multipart/form-data" method="post">';?>
    2. <p>W&auml;hlen Sie eine Datei aus:<br>
    3. <input name="Datei" type="file" size="50" maxlength="100000">
    4. <select name="bereich">
    5. <option value="0">--- Bereich ausw&auml;hlen ---</option>
    6. <option value="1">Bereich 1</option>
    7. <option value="2">Bereich 2</option>
    8. <option value="3">Bereich 3</option>
    9. </select>
    10. <input type="Submit" name="Submit" value="Weiter">
    11. </p>
    12. </form>
    Alles anzeigen


    Hieraus möchte ich nun den dateinamen und den bereich auslesen, den der benutzer gewählt hat, um es anschliießend per php weiter verarbeiten zu können. ist das möglich?
    Irgendwie so:

    Quellcode

    1. $bereich = $_POST['bereich']
    oder so ähnlich
  • Hey. Also die Combobox kannst du einfach per Post abfragen.
    Das einfachste ist immer, wenn du dir einfach mal die komplette POST/GET Daten als array ausgibst via

    Quellcode

    1. print_r($_POST);

    Also wenn du mit Formularen arbeitest um zu sehen was denn wirklich ankommt.

    Das war nur ein Tip. Zugreifen kannst du einfach per

    Quellcode

    1. $_POST['bereich'];

    Auf den Dateiname kannst du so zugreifen

    Quellcode

    1. $_FILES['Datei']['name'];

    ['Datei'] ist in dem Fall der name des Input Feldes des Types "file"
    Weitere Befehle findest du auch unter php.net



    Im Folgenden sind die Inhalte von $_FILES aus unserem Beispielskript aufgelistet. Beachten Sie, dass dies auf der Annahme basiert, dass der Name des Dateiuploads wie in dem obigen Beispielskript userfile ist. Es kann aber auch jeder andere Name genutzt werden.

    $_FILES['userfile']['name']

    Der ursprüngliche Dateiname auf der Client Maschine.
    $_FILES['userfile']['type']

    Der Mime-Type der Datei, falls der Browser diese Information zur Verfügung gestellt hat. Ein Beispiel wäre "image/gif".
    $_FILES['userfile']['size']

    Die Größe der hochgeladenen Datei in Bytes.
    $_FILES['userfile']['tmp_name']

    Der temporäre Dateiname, unter dem die hochgeladene Datei auf dem Server gespeichert wurde.
    $_FILES['userfile']['error']

    Der Fehlercode im Zusammenhang mit dem hochladen der Datei. ['error'] wurde in PHP 4.2.0 eingeführt.
  • Ich poste mal etwas Code:
    Vllt. fällt dem ein oder anderen was auf: Fehlermeldung hab ich keine!!

    Quellcode

    1. // Fehlerprüfung
    2. if ($_FILES['datei']['error'])
    3. {
    4. $error = "Fehler beim Dateiupload!<br>".
    5. $error .= "<br>".
    6. $error .= "Fehlermeldung: ".$_FILES['datei']['error'];
    7. } else
    8. {
    9. //Dateipuload vorbereiten
    10. $uploaddir = "/home/www/xxxx/html/xxxx/xxxx/"; //<-- Inhalt wurde verfälscht
    11. $filename = $_FILES['datei']['name'];
    12. //Datei hochladen
    13. if(move_uploaded_file($_FILES['datei']['name'], $uploaddir.$filename))
    14. {
    15. //Wenn erfolgreich hochgeladen, dann noch chmod setzen!
    16. if(chmod($uploaddir.$filename, 0415))
    17. {
    18. echo "Upload erfolgreich<br>";
    19. }
    20. else
    21. {
    22. echo "Upload erfolgreich aber CHMOD-Berechtigung konnte nicht auf '0415' gesetzt werden<br>";
    23. }
    24. } else
    25. {
    26. echo "Upload fehlgeschlagen<br>"; //<-- Hier sprint er rein | sprich move_uploaded_file gibt false zurück
    27. }
    28. }
    Alles anzeigen


    t_R schrieb:

    Ich vermute fast, dass der Ornder, in den du die Datei laden willst, falch gechmoded ist. Gib dem Ordner mal CHMOD von 0777.
    Ich glaube PHP gibt bei diesem Fall auch keine Fehlermeldung aus, da ja auf Seite des Scripts alles richtig abläuft, aber ist wie gesagt nur eine Vermutung.

    Der Ordner hatte bisher die "0715". Hab ihn mal auf "0777" gesetzt, also dass jeder alles darf *lach* Hat aber am Ergebnis nichts verändert.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von robert712 ()

  • robert712 schrieb:

    Ich habs gefunden. *lach* ich muss bei move_uploaded_file den tmp-Namen angeben ;)

    also

    Quellcode

    1. move_uploaded_file($_FILES['datei']['tmp_name']

    statt:

    Quellcode

    1. move_uploaded_file($_FILES['datei']['name']


    Is zwar seltsam und bissal schade, dass da errormäßig php-seitig so wenig geboten wird, aber nun gehts. :) :)

    Trotzdem danke an alle ;) >> Thread closed <<

    Naja, $_FILES['datei']['tmp_name'] ist ja im Endeffekt nur eine Variable mit einer Pfadangabe, wo die Datei zwischengespeichert wurde. Und move_uploaded_file versucht dann, auf die Datei zuzugreifen, wenn da aber was falsches in der Variable drinnen steht (in deinem Fall keine Pfadangabe sondern der ursprüngliche Dateiname), dann kann ja PHP nix dafür, sondern der Ersteller des Scripts - und daher gibt's auch keine Auskunft per Error ;)
  • t_R schrieb:

    dann kann ja PHP nix dafür, sondern der Ersteller des Scripts - und daher gibt's auch keine Auskunft per Error ;)


    Das stimmt..Aber ist ja nicht schlimm. Beim lernen macht man Fehler und lernt dadurch ja auch noch.
    Aber mit error_reporting(E_ALL); hat PHP wie ich finde eine sehr gute error Ausgabe.
    Denn somit werden selbst kleine "Notizen" angezeigt wie man etwas verbessern kann. Auch wenn es so funktioniert.

    Is zwar seltsam und bissal schade, dass da errormäßig php-seitig so wenig geboten wird, aber nun gehts. :) :)

    Deswegen kann ich den Satz von dicht nachvollziehen :P