Comment obtenir le contenu-type d'un fichier en PHP?
J'utilise PHP pour envoyer un e-mail avec une pièce jointe. La pièce jointe peut être de plusieurs types de fichier (pdf, txt, doc, swf, etc).
Tout d'abord, le script récupère le fichier à l'aide de "file_get_contents".
Plus tard, le script fait écho dans l'en-tête:
Content-Type: <?php echo $the_content_type; ?>; name="<?php echo $the_file_name; ?>"
Comment puis-je définir la valeur correcte pour $the_content_type?
OriginalL'auteur edt | 2009-08-05
Vous devez vous connecter pour publier un commentaire.
Je suis à l'aide de cette fonction, qui comprend plusieurs réserves pour compenser les anciennes versions de PHP ou tout simplement de mauvais résultats:
Il essaie d'utiliser la plus récente de PHP
finfo
fonctions. Si ceux-là ne sont pas disponibles, il utilise lemime_content_type
alternative et inclut la baisse-dans le remplacement de la Upgrade.php bibliothèque pour s'assurer que cela existe. Si ceux qui n'ont pas de retour quelque chose d'utile, il va essayer de l'OS'file
de commande. Autant que je sache, c'est uniquement disponible sur les systèmes *NIX, vous pouvez changer ou de s'en débarrasser si vous prévoyez de l'utiliser sur Windows. Si rien n'a fonctionné, il essaieexif_imagetype
comme solution de repli pour les images seulement.Je viens de remarquer que les différents serveurs varient énormément dans leur prise en charge pour le type mime des fonctions, et que le Upgrade.php
mime_content_type
de remplacement est loin d'être parfait. Le peu deexif_imagetype
fonctions, à la fois l'original et la Upgrade.php le remplacement du bien sont travail assez fiable. Si vous n'êtes intéressé que par les images, que vous ne voulez utiliser cette dernière.file
commande est redondante. L'extension FileInfo (et mime_content_type fonction) utiliser le même fichier de base de données de détection comme lafile
de commande.Dans mes tests, j'ai trouvé
mime_content_type
peu fiables, ou peut-être son upgrade.php le remplacement a été, tandis que lefile
appel est généralement couronnée de succès. Je regarde cela de plus pour voir quand et pourquoi il ne parvient pas dans quelles circonstances. Au moins, il n'y a aucun mal à être là. 🙂J'ai eu un coup d'oeil rapide à l'Upgrade.php code pour mime_content_type. D'abord, il essaie de la FileInfo extension PECL. Si cela n'existe pas, il tente d'analyser les
magic
fichier lui-même, en PHP. Problème: On ne regarde que dans quelques endroits prédéfinis pour lamagic
fichier. Il échoue sur ma Debian Squeeze par exemple. Il est également possible que l'analyseur a des bugs, mais je ne l'ai pas vérifié à fond.Ouais, je ne suis pas entièrement convaincu de la qualité de l'upgrade.php de la bibliothèque. En tant que tel, puisque même
mime_content_type
ne semble pas être disponible partout, je pense que la reprise dufile
est approprié. 🙂Oui. Vous êtes probablement mieux avec de FileInfo et de repli de
file
.OriginalL'auteur deceze
Avec finfo_file: http://us2.php.net/manual/en/function.finfo-file.php
OriginalL'auteur Quentin
Il est très facile de l'avoir dans php.
Simplement appeler les fonction php
mime_content_type
La documentation PHP de la fonction mime_content_type()
Espérons que cela aide quelqu'un
OriginalL'auteur BoCyrill
Voici un exemple d'utilisation finfo_open qui est disponible en PHP5 et PECL:
Alternativement, vous pouvez utiliser le obsolète mime_ content_ type fonction:
ou de l'utilisation de l'OS est construit dans les fonctions de:
OriginalL'auteur Richy B.
Cela a fonctionné pour moi
Pourquoi est-mime_content_type() obsolète en PHP?
OriginalL'auteur George
Je suppose que j'ai trouvé sur une courte distance.
Obtenir la taille de l'image à l'aide de:
$infFil=getimagesize($the_file_name);
et
La
getimagesize
retourne un tableau associatif qui ont un MIME cléJe l'ai utilisé et ça marche
OriginalL'auteur user3348274
J'ai essayé la plupart des suggestions, mais elles échouent toutes pour moi (je suis entre les deux tout utile version de PHP apparemment. J'ai fini avec la fonction suivante:
OriginalL'auteur Martijn
Il est à la tête de la fonction:
Notez que cette fonction doit être appelée avant aucune sortie. Vous pouvez trouver plus de détails dans la référence http://php.net/header
Edit:
Ops, j'ai mal compris la question:
Depuis php 4.0 il y a la fonction mime_content_type pour détecter le type mime d'un fichier.
En php 5 est obsolète, doit être remplacé par le le fichier info ensemble de fonctions.
Pris! Je viens de modifier la réponse, par le chemin 😉
OriginalL'auteur Eineki
Je recommande vraiment à l'aide d'un Framework comme "CodeIgniter" pour seinding e-Mails. Voici un Screencast sur "Envoi d'e-Mails avec CodeIgniter" en seulement 18 Minutes.
http://net.tutsplus.com/videos/screencasts/codeigniter-from-scratch-day-3/
OriginalL'auteur
essayez ceci:
OriginalL'auteur Jet