Bildupload auf Formate beschränken

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

  • Bildupload auf Formate beschränken

    Nabend!

    Ich will meinen File-Upload auf JPG und GIF (und von mir aus PNG) beschränken.

    Hier im Forum habe ich nen Link auf folgendes gefunden:
    Code:
    image           jpeg                                [RFC2045,RFC2046]
                    gif                                 [RFC2045,RFC2046]
                    png                                 [Randers-Pehrson]
    Nun bekomme ich allerdings als Type von meinen Bildern nicht image/png, sondern z.B. image/x-png zurück geliefert. Wie kann ich denn jetzt zuverlässig checken, in welchem Format eine Datei vorliegt?

  • #2
    In diesem Fragment kommen alle vor ...
    PHP-Code:

                    
    if (preg_match("/image\/(gif|jpeg|x-jpeg|pjpeg|x-png|png)/"$tempmime)) {
                        
    $this->mimetype $tempmime;
                        
    $this->filesize $tempfilesize;

                        SWITCH (
    $tempmime) {
                            case 
    'image/gif':
                                
    Image_Remote::_fetchAndParseGIFHeader($fp);
                                
    $this->imagetype 1;
                                break;
                            case 
    'image/png':
                            case 
    'image/x-png':
                                
    Image_Remote::_fetchAndParsePNGHeader($fp);
                                
    $this->imagetype 3;
                                break;
                            case 
    'image/jpeg':
                            case 
    'image/pjpeg':
                            case 
    'image/x-jpeg':
                                
    Image_Remote::_fetchAndParseJPGHeader($fp);
                                
    $this->imagetype 2;
                                break;
                        }

                    } else {
                        
    $this->errstr "Unsupported mimetype $tempmime.";
                        
    $retval 0;
                    } 

    Kommentar


    • #3
      WOW!

      Das sieht ja wunderbar aus. Ich werde mal sehen, wie ich das in meine Sache einbauen kann.

      Ich bedanke mich!

      Kommentar


      • #4
        Mir kommt das zeugs mit dem Modifier zwar bekannt vor, aber selbst das Forum konnte mir in diesem Fall noch nicht weiterhelfen:

        Warning: Unknown modifier '(' in /var/www/web1586/html/proinwebcom/lab/chat/chat.userbildhochladen.php on line 61

        Mein Code:
        PHP-Code:
        // Prüfung des Dateiformats
            
        if (preg_match("/image/(gif|jpeg|x-jpeg|pjpeg|x-png|png)/",$bild[type])) { // <-- Zeile 61
                
        switch ($bild[type]) {
                    case 
        'image/gif':
                        
        $endung "gif";
                        break;
                    case 
        'image/png':
                    case 
        'image/x-png':
                        
        $endung "png";
                        break;
                    case 
        'image/jpeg':
                    case 
        'image/pjpeg':
                    case 
        'image/x-jpeg':
                        
        $endung "jpg";
                        break;
                    } 

        Kommentar


        • #5
          Weil das Form Backslashes verschluckt

          PHP-Code:
           if (preg_match("/image\\/(gif|jpeg|x-jpeg|pjpeg|x-png|png)/",$bild[type])) { 
          Ich hoffe jetzt verschluckt es das \ nit ...

          Übung gelungen

          Kommentar


          • #6
            Ahh, eine der häufigsten Ursachen hier im Forum.

            Hätte ich unter den RegEx im Manual eigentlich erkennen sollen!

            Kommentar


            • #7
              getimagesize pfeift auf MIME-Angaben der Browser und ermittelt den Typ anhand des Dateiheaders.
              Im optionalen zweiten Parameter wird ein Flag zurückgeliefert, dass je nach Typ einen bestimmten Wert annimmt.
              mein Sport: mein Frühstück: meine Arbeit:

              Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

              Kommentar


              • #8
                Das wäre ja noch idealer. Werds auch mal ausprobieren.

                Hab jetzt im Moment leider das Problem, dass obwohl moveuploadedfileto() mir TRUE zurück gibt, die Datei nicht gespeichert wird. Aber ich bleib dran.

                Dann ist mir noch aufgefallen, dass ich, wenn ich den Dateiupload mit ENTER bestätige, kein Upload vorgenommen wird. Nur wenn ich mit der Maus auf den SUBMIT klicke. Ist das normal, oder liegt das an meinen Einstellungen im IE?

                Kommentar


                • #9
                  letzteres ist mir auch aufgefallen.
                  man MUSS irgendwie den submit-BUTTON betätigen?

                  @tobi
                  hattest du da schon ne lösung?
                  INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                  Kommentar


                  • #10
                    Ich könnte wetten das man nur den Focus via JavaScript auf den Button setzen muss, dann müsste eigentlich mit Enter das Ding starten.

                    Kann mich täuschen bei VB6.0 ging es immer so.
                    [color=blue]MfG Payne_of_Death[/color]

                    [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
                    [color=red]Merke:[/color]
                    [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

                    Murphy`s Importanst LAWS
                    Jede Lösung bringt nur neue Probleme
                    Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
                    In jedem kleinen Problem steckt ein großes, das gern raus moechte.

                    Kommentar


                    • #11
                      Ich nehme auf jeden Fall an, dass es mit der Sicherheit im Browser zu tun hat,

                      Die sache mit focus() wäre ne idee. jemand den korrekten Code dafür?

                      Kommentar

                      Lädt...
                      X