IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Fiabiliser la détection du type Mime d'un fichier [Tutoriel]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Responsable d'une MOE bancaire
    Inscrit en
    Juillet 2003
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Responsable d'une MOE bancaire

    Informations forums :
    Inscription : Juillet 2003
    Messages : 261
    Par défaut Fiabiliser la détection du type Mime d'un fichier
    Bonjour,

    je demande votre avis sur un problème que je rencontre. En effet, je cherche la methode la plus efficace pour connaite le mime d'un fichier uploadé :

    - il y a $_FILES['userfile']['type'] : ca fonctionne mais on peut le detourner facilement en changeant l'extension du fichier ou en dedouillant les parametres du navigateur

    - Se baser sur l'extension du fichier : coté sécurité, c'est meme pas la peine

    - mime_content_type : ca fonctionne avec un moyen inferieur à 1/10 et dans la plus part des cas elle renvoi une chaine vide

    - les fonctions finfo (PECL) : la version actuelle est buguée (elle renvoi tout le temps 'application/x-dpkg'), mais meme si on contourne le probleme en supprimant tous les ! du fichier magic.mime, le resultat est tres loin d'etre satisfaisant

    - je suis sur windows (apache), alors les commandes genre 'file -bi $filename' ne sont pas possible

    voila, vous pouvez remarquez que je postule pas par hasard mais apres une longue recherche et des nombreuses experiences. C'est pour cette raison que je me tourne vers vous pour vous demander si vous connaissez soit : une autre methode fiable pour trouver le mime d'un fichier, ou tout simplement comment améliorer les resultats d'une des methodes citées ci-dessus.

    merci bcp d'avance

  2. #2
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Eternel problème... Même sous *nix, le "file -bi" ne retourne pas toujours un résultat cohérent (genre Word pour un Powerpoint )
    Tu peux éventuellement jeter un oeil à
    http://www.freedesktop.org/wiki/Stan..._2dinfo_2dspec
    http://www.freedesktop.org/wiki/Soft...ared-mime-info


  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 297
    Par défaut
    les quelques premier octect contient souvant des trucs genre
    GIF, JFIF...

    c'est vrais que ça ne sera de toute façon jamais fiable...

    Personnellement, je te conseillerai d'établir un liste des entêtes de fichier type
    puis avec un file() de prendre la première ligne et de contrôlé cette entête avec les types que tu à établies.

    (certain fichier n'ont pas d'entête)

  4. #4
    Membre éclairé
    Homme Profil pro
    Responsable d'une MOE bancaire
    Inscrit en
    Juillet 2003
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Responsable d'une MOE bancaire

    Informations forums :
    Inscription : Juillet 2003
    Messages : 261
    Par défaut
    c'est bien ce que je disais, c pas du cadeau!! mais bon j'ai un peu l'habitude maintenant!
    Personnellement, je te conseillerai d'établir un liste des entêtes de fichier type
    oui ce genre de liste sont deja disponibles dans mon programme
    file() de prendre la première ligne et de contrôlé cette entête avec les types que tu à établies
    j'utilisais bien ce principe pour identifier les fichiers OpenOffice, c'est pas parfait ma ca fonctionne pas mal. Bon bein si vous dites qu'il y a que ça à faire, alors j'essayerai de le generaliser sur tous les autres types
    (certain fichier n'ont pas d'entête)
    tu veux dire qu'il y a des types de fichier qui n'ont pas d'etetes? parce que à la limite si j'arrive à les identifier je pourrais utiliser une autre methode pour connaitre leurs mimes!!
    mais si tu veux dire que dans le meme type de fichier (word par exemple), il y a des documents qui ont des entetes et d'autres ne l'ont pas! ça ca va me tuer!
    en tout cas je vais me plonger à developper un petit algo qui fera l'affaire, je vais le tester et ensuite vous le proposer pour une éventuelle vérification

    comme on dit plusieurs tetes qui pensent c'est tjs mieu qu'une

    EDIT : pour j'avoue que je comprend que dale de ce qu'ils cherchent à faire mais promis je regarderai ca de plus pres ce soir

  5. #5
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Ou comment reinventer la roue
    C'est justement le role de magic.mime
    Code magic.mime : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ...
    # msword: file(1) magic for MS Word files
    #
    # Contributor claims:
    # Reversed-engineered MS Word magic numbers
    #
     
    0       string          \376\067\0\043                  application/msword
    0       string          \320\317\021\340\241\261        application/msword
    0       string          \333\245-\0\0\0                 application/msword
     
    ...

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 297
    Par défaut
    Les fichiers textes par exemples, n'ont pas d'entête par il sont brute.

    Mais malheureusement, beaucoup de fichiers ne peuvent être identifié uniquement grâce à leur extension

    Je pense qu'il faudrait crée une base, avec 2 types d'informations en fonction du type de fichier:
    les éléments que l'on retrouve à coup sure (JFIF, GIF)
    le nombre de d'octet maximum ou trouvé ses éléments (11, 3)

  7. #7
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418

Discussions similaires

  1. Type MIME d'un fichier
    Par KeKeMaN dans le forum Général Java
    Réponses: 7
    Dernier message: 06/03/2007, 08h37
  2. récuperer le type mime à partir du fichier
    Par isma92 dans le forum Langage
    Réponses: 3
    Dernier message: 09/02/2007, 11h28
  3. [FTP] Connaitre le type mime d'un fichier
    Par jak0 dans le forum Langage
    Réponses: 15
    Dernier message: 18/07/2006, 11h32
  4. Type Mime d'un fichier
    Par partyboy dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/04/2006, 10h04
  5. [struts] déterminer le type Mime d'un fichier
    Par k4eve dans le forum Struts 1
    Réponses: 4
    Dernier message: 14/06/2004, 10h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo