Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] PHP Dateiupload

Einklappen

Neue Werbung 2019

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

  • [Erledigt] PHP Dateiupload

    Hallo,

    ich sitze jetzt schon eine weile an einem sehr kleinen aber fehlerhaften quelltext. Das Script soll überprüfen ob eine datei gewählt wurde, ob sie vom Format .stl ist, wenn ja dann speichern. Ich hoffe ihr könnt den Fehler finden, er muss irgendwo dadrin stecken:
    PHP-Code:
    if(isset($_POST['senden'])){
    if(!
    is_uploaded_file($_FILES['datei']['tmp_name'])){
        
    $fehler[]="Datei fehlt";
        }    elseif (
    $_FILES['datei']['type'] == "application/sla" || $_FILES['datei']['type'] == "application/vnd.ms-pki.stl" || $_FILES['datei']['type'] == "application/x-navistyle"){
                
    $output_dir "uploads/";

                
    //move the uploaded file to uploads folder;
                
    move_uploaded_file($_FILES["datei"]["tmp_name"],$output_dir.$_FILES["datei"]["name"]);
     
                echo 
    "Uploaded File :".$_FILES["datei"]["name"];
    }else{ 
    $fehler[] = "Datei ist nicht im .stl-Format"; }
    }

    if(isset(
    $fehler)){
                echo 
    implode(", ",$fehler);    
            }else{
                echo 
    "Datei wurde gespeichert...";
            } 
    Das HTML dazu:
    Code:
    <form name="bestellung" id="bestellung" method="post" action="<?php echo $_SERVER['SCRIPT_NAME'] ?>" enctype="multipart/form-data">
    <input class="input" name="datei" type="file"></input>
    <input name="senden" type="submit" class="input" value="Prüfen">
    </form>
    Weder die Datei wird hochgeladen, noch stimmen die fehlermeldungen in manchen fällen.

    Vielen Dank schonmal im vorraus.


  • #2
    Hallo,
    könntest du den Quelltext vernünftig einrücken? Wenn du dabei noch versuchst die einzelnen Schritte zu kommentieren findest du den Fehler vielleicht selbst.
    Sind die benötigten Berechtigungen auf dem Filesystem gesetzt?

    noch stimmen die fehlermeldungen in manchen fällen.
    Welche Meldung erwartest du, was passiert?
    Relax, you're doing fine.
    RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

    Kommentar


    • #3
      Sorry, ich habe das gerade aus dreamweaver zusammenkopiert.

      Ich versuche schon die ganze zeit den fehler zu finden, ich glaube er liegt in der syntax vom elseif...

      Wenn eine Datei drin ist, die aber das falsche Format hat, gibt er aus "Datei fehlt"

      Wenn man die Datei im richtigen Format hat, gibt er aus "Datei ist nicht im .stl-Format"

      Kann man denn die abfrage so machen mit den || als oder

      Kommentar


      • #4
        PHP-Code:
        #fehlerpruefung
        if(isset($_POST['senden'])){                #formular abgeschickt
            
        if(!is_uploaded_file($_FILES['datei']['tmp_name'])){
            
        $fehler[]="Datei fehlt";
            }    
                elseif (
        $_FILES['datei']['type'] == "application/sla" || $_FILES['datei']['type'] == "application/vnd.ms-pki.stl" || $_FILES['datei']['type'] == "application/x-navistyle"){
                    
        $output_dir "uploads/";
                    
        move_uploaded_file($_FILES["datei"]["tmp_name"],$output_dir.$_FILES["datei"]["name"]);
                    echo 
        "Uploaded File :".$_FILES["datei"]["name"];
                }
                    else{ 
        $fehler[] = "Datei ist nicht im .stl-Format"; }

            if(isset(
        $fehler)){
                        echo 
        implode(", ",$fehler);    
            }
                else{
                    echo 
        "Datei wurde gespeichert...";
                }

        Kommentar


        • #5
          Lass dir mal mit var_dump($_FILES); Infos über den Upload ausgeben.
          Ist die Dateigröße vielleicht zu groß?

          PHP-Code:
          ini_set('display_errors'1);
          echo 
          'max filesize: '.ini_get('upload_max_filesize').' und max post_size: '.  ini_get('post_max_size'); 
          Relax, you're doing fine.
          RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

          Kommentar


          • #6
            Augabe: max filesize: 2M und max post_size: 8M

            Meine testdatei hat 150kb aber sie kann auch groß werden also 20Mb oder mehr will ich eig auch hochladbar machen

            Kommentar


            • #7
              Und die Dateigröße?
              Relax, you're doing fine.
              RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

              Kommentar


              • #8
                array(1) {
                ["datei"]=> array(5) {
                ["name"]=> string(14) "simplecube.stl"
                ["type"]=> string(24) "application/octet-stream"
                ["tmp_name"]=> string(46) "D:\Users\Ars\Desktop\PHP\xampp\tmp\phpF177.tm p"
                ["error"]=> int(0)
                ["size"]=> int(153484)

                Kommentar


                • #9
                  da seh ich es schon beim type habe ich falsche..

                  Kommentar


                  • #10
                    Er speichert jetzt auch die dateien. Aber er lässt auch falsche fateiformate manschmal durchgehen. Ich verstehe nicht, warum er bei einer .stl als type "application/octet-stream" ausliest, statt einen der frei .stl mime types(application/sla, application/vnd.ms-pki.stl, application/x-navistyle)

                    Kommentar


                    • #11
                      Dann check doch anstatt des MIME, ob die letzten 4 Zeichen des Dateinamens ".stl" sind, wenn der MIME-Type nicht passt.

                      Dann kommst auch zurecht

                      Verwende dafür einfach substr.

                      Kommentar

                      Lädt...
                      X