Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP MIME Sniffing usw.

Einklappen

Neue Werbung 2019

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

  • PHP MIME Sniffing usw.

    Hey,

    ich arbeite gerade an meiner Kundendatenbank, die das .stl Dateiformat verarbeiten soll. Dazu brauche ich ein input-feld, das beim upload nur .stl dateien durchlässt.

    Ich habe bereits zwei methoden ausprobiert, die den MIME-Type zurückgeben, der für .stl dateien gültig ist.

    Erste Methode:
    PHP-Code:
    if($_FILES['datei']['type'] == "application/sla" || 
    $_FILES['datei']['type'] == "application/vnd.ms-pki.stl" || 
    $_FILES['datei']['type'] == "application/x-navistyle"
    Dier erste Methode liefert nur den MIME_type: application/octet-stream, der für einen unbekannten Dateitypen steht.

    Zweite Methode:
    PHP-Code:
    $open finfo_open($_FILES['datei']['tmp_name']);
    $mime finfo_file($open$_FILES['datei']['tmp_name']);
    finfo_close($mime); 
    lieferte nach fehlschlagenden versuchen, den selben Dateitypen(MIME-Type)

    Mein Frage ist jetzt:
    Gibt es in PHP ein verfahren, um den MIME-Type auch von diesem Format rauszufinden. Ich habe im Internet über das MIME Sniffing gelesen, also das auswerten erster Binärdaten. Kann man das irgendwie in PHP realisieren.

    Freu mich auf eure Antworten.


  • #2
    Ev. hilft dir ja das hier? http://stackoverflow.com/questions/7...thography-file
    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
      Hey,

      danke erstmal. Ich habe das probiert, aber die erste zeile lautete:
      Code:
      Exported from Blender-2.71
      Und ich muss ja auch von Blender exportierte .stl annehmen, also habe ich die ersten hundert zeichen mit preg_match auf "solid" überprüft.

      Allerdings ergeben die Zeichen oft keinen Sinn bis auf die erste Zeile sehen die andreren so aus:

      Code:
      (sub 0)�Z�|?����=�&v?�^h?��2>[�q?�4I?�-[>
      Ich habe es mit mit der Methode probiert:
      PHP-Code:
      $userdatei fopen($_FILES['datei']['tmp_name'],"r");
          
      $zeile fgets($userdatei,1024);
          
      fclose($userdatei);
          
      $suchzahl strpos ($zeile,"solid");
              if(
      preg_match($zeile,"solid")){

                      } 
      Wie lese ich die Datei richtig aus? Andere Zeichenkodierung?
      Den zweiten Teil des Posts, habe ich nicht richtig verstanden.

      Kommentar


      • #4
        Dann ist das wohl das binary format...
        Code:
        UINT8[80] – Header
        UINT32 – Number of triangles
        
        foreach triangle
        REAL32[3] – Normal vector
        REAL32[3] – Vertex 1
        REAL32[3] – Vertex 2
        REAL32[3] – Vertex 3
        UINT16 – Attribute byte count
        end
        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

        Kommentar


        • #5
          Okay. Aber was mus ich an meinem befehl ändern. Sorry aber von dem:
          UINT8[80] – Header
          UINT32 – Number of triangles

          foreach triangle
          REAL32[3] – Normal vector
          REAL32[3] – Vertex 1
          REAL32[3] – Vertex 2
          REAL32[3] – Vertex 3
          UINT16 – Attribute byte count
          end
          hab ich irgendwie garnichts verstanden,
          Könntest du es bitte in einen PHP-Code umsetzen?

          Kommentar


          • #6
            Das ist nicht mit einer simplen Änderung an einem Befehl getan (und schon gar nicht, was ich mal eben aus dem Ärmel schütteln könnte). Was ich das gequotet habe ist der grundsätzliche Aufbau des Binärformats (kopiert aus der wikipedia).

            Du wirst dich schon selber damit auseinandersetzen müssen.
            Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

            Kommentar


            • #7
              leider haste mE. zu knapp code geposted, hab aber mal nen kurzen link http://dannykopping.com/blog/determi...-unix-and-php/
              für dich.

              Kommentar


              • #8
                Der Code wäre toll, aber er ist nur für Unix Systeme. Da der Webserver unter Windows läuft hilft das nicht viel.

                Ich habe herausgefunden, wie man dateien binär liest, aber das heiist ja, dass ich 0en und 1er ausgegeben bekomme.

                Wie kann ich dann noch den Inhalt feststellen...

                Kommentar


                • #9
                  Zitat von Ars27 Beitrag anzeigen
                  Der Code wäre toll, aber er ist nur für Unix Systeme. Da der Webserver unter Windows läuft hilft das nicht viel.
                  wenn du meinst.
                  http://php.net/manual/de/fileinfo.installation.php

                  Kommentar


                  • #10
                    Dieser Code:
                    PHP-Code:
                     $filetype exec("file $filename----mime-type"); 
                    Kann meines wissens nach nicht fuktionieren wegen der setzung der hochkommatas.

                    Ich habe Sie jetzt nach aussen gesetzt:
                    PHP-Code:
                    $filetype exec("file $filename -z -b --mime-type"); 
                    jedoch tut sich nichts(string ist leer) ob wohl die syntax richtig sein müsste
                    string exec ( string $befehl [, array &$ausgabe [, int &$return_var ]] )

                    Kommentar


                    • #11
                      hast du ddir inzwischen file auf der win-dose installiert?
                      ich dachte du nimmst die pure php methode.

                      Kommentar

                      Lädt...
                      X