ist datei eine bilddatei...

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

  • ist datei eine bilddatei...

    hi...

    vor dem upload wollte ich die datei prüfen, ob sie ne bilddatei ist, und zwar mit $_FILES['upload']['type']. nun habe ich gelesen das dies nur geht, wenn der browser das akzeptiert. gibts denn da noch ne andere möglichkeit?
    ausserdem bekomm ich als ausgabe zum Bsp. image/pjpeg. steht bei jpg-datein als typ immer diese ausgabe, dachte es wäre nur jpg oder jpeg.

    gruss alex

  • #2
    du kannst doch beim bearbeiten des scripts festlegen, welche endungen eine datei haben darf...also beispielsweise .gif .jpg .jpeg

    das könnte man doch mit preg_match rausfiltern...

    oder versteh ich dich falsch

    Kommentar


    • #3
      hi...

      nee du hast mich richtig verstanden.
      ich kann die dateiendung auch so rausbekommen, aber ich dachte wen das einmal im array steht, kann man das ja auch nutzen.
      mir ging es nur darum das dieser ausdruck $_FILES[....]['type'] evtl. nicht immer vom browser akzeptiert wird, aber das ist ja mit deinem vorschlag hinfällig.

      Kommentar


      • #4
        @bruteforce
        und was machst du, wenn ich meine php-datei einfach umbenenne in
        script.jpg ?

        @lx
        prüf auf type ... wenn der nichts liefert, kannst du die datei in einen
        temporären ordner schieben und mit getimagesize() auslesen ... einer der
        parameter gibt dir einen mime-type an ... übrigens gibt es auch noch x-jpeg
        such dazu hier im forum mal nach "mime"
        Kissolino.com

        Kommentar


        • #5
          ich würd prinzipiell mit getimagesize arbeiten, da ich mich fast zu wetten traue, dass eine exe-datei, die ich in *.jpg umbenenne auch als image/jpeg bei dir ankommt, da windows nach der dateiendung geht

          aber in nen temporären ordern schieben musst du nicht, da is die datei schon
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            OffTopic:

            @ wurzel

            so bösartig ist doch niemand .... zumindest kann man das ja hoffen...

            Kommentar


            • #7
              vor dem upload wollte ich die datei prüfen, ob sie ne bilddatei ist, und zwar mit $_FILES['upload']['type'].
              du hast dich verschrieben?

              pjpeg kommt aber nur bei manchen browsern, bei anderen jpeg ... darum halt getimagesize[2?]
              Die Zeit hat ihre Kinder längst gefressen

              Kommentar


              • #8
                Original geschrieben von mrhappiness
                aber in nen temporären ordern schieben musst du nicht, da is die datei schon
                sicher, dass du immer auf das temp-verzeichnis mit getimagesize() zugreifen kannst ?
                Kissolino.com

                Kommentar


                • #9
                  @wurzel...

                  stimmt daran hatte ich noch gar nicht gedacht.

                  hab grad mal ne php datei umbenannt, und wenn ich den type prüfe dann wirds ni akzeptiert.

                  wieso hast du gesagt man soll dann noch zusätzlich den mime-type prüfen?

                  Kommentar


                  • #10
                    Original geschrieben von lx-club
                    wieso hast du gesagt man soll dann noch zusätzlich den mime-type prüfen?
                    mir war so, al gäbe getimagesize() bei jpegs unterschiedliche werte aus, je nach "erzeuger" ... kann mich aber auch irren.
                    Kissolino.com

                    Kommentar


                    • #11
                      @derhund

                      mit getimagesize() kan ich doch aber erst prüfen, wenn die datei schon hochgeladen wurde und nicht schon vorher.
                      oder habe ich dich da falsch verstanden?

                      Kommentar


                      • #12
                        wie willst du es denn clientseitig prüfen?
                        Kissolino.com

                        Kommentar


                        • #13
                          oder habe ich dich da falsch verstanden?
                          ich habe doch garnichts gesagt,
                          sondern dich gefragt, wie das gemeint war.
                          Die Zeit hat ihre Kinder längst gefressen

                          Kommentar


                          • #14
                            nee clientseitig nich.

                            also wenn ich mit $_FILES[...]['type'] prüfe, dann wurde die datei ja mit move_uploade_file(....) noch nicht auf dem server gespeichert, aber bei getimagesize() muss ich doch immer einen pfad angeben, wo das bild zu finden ist.
                            wenn ich mir im folgenden script mal type1[2] ausgeben lassen will, erhalte ich ne fehlermeldung.
                            lasse ich mir $type ausgeben bekomm ich image/pjpeg
                            oder hab ich was falsch verstanden? *grübel*

                            PHP-Code:
                            if (isset($submit)){
                             
                              
                            $image $_FILES['upload']['name'];
                              
                            $type =  $_FILES['upload']['type'];
                              
                            $type1 getimagesize($image);
                              echo 
                            $type1[2];

                            Kommentar


                            • #15
                              hmm,

                              eigentlich findest du durch suchen sicher ne menge zum thema

                              ich bin mal so frei
                              PHP-Code:
                                      $Uploaded IMAGE_UPLOAD_DIR."/".$Filename;
                                      if (!@
                              move_uploaded_file ($_FILES["whatever"]["tmp_name"][$i1], $Uploaded)) {
                                        
                              $UploadError[$i1] = ERROR_COULDNT_MOVE_FILE;
                                        continue;
                                      }
                                      if ((!
                              $ImageSize = @getImageSize($Uploaded)) || $ImageSize[2] < || $ImageSize[2] > 3) {
                                        
                              $UploadError[$i1] = ERROR_NO_REAL_IMAGE_FILE;
                                        continue;
                                      } 
                              Die Zeit hat ihre Kinder längst gefressen

                              Kommentar

                              Lädt...
                              X