[form] vérifier fichier sans extension

Eléphant du PHP | 82 Messages

02 févr. 2012, 18:58

Bonjour,

Sur mon site, j'ai un formulaire d'envoi de fichier. Je n'accepte que les fichiers avec des certaines extension (pdf, txt, etc...)

Une personne qui utilise un mac a voulu m'envoyer un pdf. Cependant, étant sous mac, son fichier ne contenait pas d'extension. Mon formulaire l'a donc refusé en disant que l'extension n'était pas valide...

Est-il possible de contrer ce problème?

Merci

ViPHP
xTG
ViPHP | 7331 Messages

02 févr. 2012, 19:01

Tu peux vérifier le type MIME qui se trouve aussi dans l'array $_FILES.

Eléphant du PHP | 82 Messages

02 févr. 2012, 19:42

Merci pour ta réponse!

Ce type mime, c'est pareil que l'extension
C'est donc mieux si je verifie le mime de tout les documents, plutot que de verifier l'extension?

Merci

ViPHP
xTG
ViPHP | 7331 Messages

02 févr. 2012, 19:44

Le type MIME est plus sûr que l'extension.
On peut avoir un type MIME image/png et avoir une extension .exe donc aucun rapport entre les deux.

Eléphant du PHP | 82 Messages

02 févr. 2012, 21:01

Ok, merci.

Mon site récolte des fichiers et les met a disposition d'autre utilisateur. Donc un fichier pdf sans extension, devrait être enregistré avec son extension .pdf à la fin pour qu’il soit lisible par tous les membres (même ceux qui ont windows).

J'ai essayer de prendre le mime en faisant
echo $_FILES['work_doc']['type'];
J'ai fait quelque test: Lorsque j'envoie un fichier .pdf (c'est vraiment un pdf) le mime est : application/pdf
Lorsque j'envoie le même fichier mais sans l'extension le mime est : application/octet-stream

Pareil pour un jpg.
J'ai renommé un .jpg en .pdf et il me dit encore : application/pdf

Donc le type est directement lié à l'extension.

Comment trouver le mime alors? Le problème de fichier qui n'ont pas d'extension est répondu ou il y a peu de personne qui n'ont pas d'extension?

Merci

ViPHP
xTG
ViPHP | 7331 Messages

02 févr. 2012, 22:02

Je soupçonne fortement windows de renommer le MIME lorsque tu supprimes l'extension. ;)
Si tu as la possibilité tentes avec un fichier sans extension en provenance d'un MAC.

Eléphant du PHP | 82 Messages

02 févr. 2012, 22:06

J'ai télécharger directement le document que le propriétaire du mac m'a envoyé (le fichier sans extension donc) car j'ai pensé la même chose que toi. Mais le mime était aussi application/octet-stream

ViPHP
xTG
ViPHP | 7331 Messages

02 févr. 2012, 22:11

Bah là je sors de mes compétences...
J'ai toujours cru jusqu'à maintenant que c'était le type MIME qui permettait aux logiciels de reconnaitre tel ou tel fichier. :/

Eléphant du PHP | 82 Messages

02 févr. 2012, 22:37

D'après ce que j'ai lu, php ne peut pas lire le mime du fichier, c'est le navigateur qui l'envoie.. et firefox ne le fait pas il me semble, mais internet explorer oui.. Pour le moment, je préfère garder ma vérification de l'extension.