Sujet: [PHP] Comment envoyer le bon type MIME
23/04/2007 @ 22:02:50: gizmo: [PHP] Comment envoyer le bon type MIME
Bon, j'ai un problème de type MIME avec les fichiers texte. Quand c'est un fichier binaire, c'est simple, sa signature me donne le bon type mime à tous les coups. Par contre, quand j'ai un fichier de texte, je me retrouve systématiquement avec text/plain (et l'encodage), alors que pour un fichier css, par exemple, c'est text/css que je dois renvoyer au browser. Y a pas une solution miracle en PHP pour renvoyer le bon type?

Et le premier qui me sort un truc à base de découpe du nom de fichier se prend une mandale :oh:
23/04/2007 @ 23:12:13: cauet: [PHP] Comment envoyer le bon type MIME
C'est pas avec une menace que tu aura des réponses à mon avis :joce:
Tu va effrayer tout le monde :ddr555:
23/04/2007 @ 23:12:38: max: [PHP] Comment envoyer le bon type MIME
c'est php qui génère ton fichier css ?
23/04/2007 @ 23:21:10: Keeper: [PHP] Comment envoyer le bon type MIME
je comprends pas très bien la question en fait
23/04/2007 @ 23:28:31: Altar: [PHP] Comment envoyer le bon type MIME
Pareil :oh:
23/04/2007 @ 23:37:09: gizmo: [PHP] Comment envoyer le bon type MIME
non, c'est pas php qui génère mon fichier. Le fichier existe mais n'est pas directement accessible par une url. Il y a d'abord des check de droit et autres opérations avant de renvoyer le fichier. Du coup, je passe par un readfile() mais je dois d'abord renvoyer dans le header le content-type du fichier. Or pour un svg, un css ou un txt, le contentType à renvoyer n'est pas le même mais bien le mimeType que me donne la commande système "file"
23/04/2007 @ 23:39:17: antp: [PHP] Comment envoyer le bon type MIME
Je ne vois pas très bien comment on peut deviner le type d'un fichier "texte" autrement que par son extension. Du CSS, Javascript ou autre ça se ressemble fort quand même niveau contenu...
23/04/2007 @ 23:42:59: max: [PHP] Comment envoyer le bon type MIME
tu peux récupérer le type du fichier externe dans le header de la réponse et le passer lors de l'envoie ?

24/04/2007 @ 00:09:59: philfr: [PHP] Comment envoyer le bon type MIME
Je ne vois pas très bien comment on peut deviner le type d'un fichier "texte" autrement que par son extension. Du CSS, Javascript ou autre ça se ressemble fort quand même niveau contenu...


T'as osé parler de l'extension, tu mérites sans doute la mandale... :grin:


Sinon, ben +1000. La commande file connaît le type des fichiers par leur "magic" (quelques bytes du début) qui n'existe pas pour tous les types.

Si un fichier texte a un magic, c'est en général qu'il a un commentaire au début (genre #!/bin/bash pour un shell script).
24/04/2007 @ 08:41:55: blietaer: [PHP] Comment envoyer le bon type MIME
<?
$fichier_xls=$_GET['file_name'];

$fI="xls";

$sendmime = $mimetypes[$fI["fileext"]];
if ($sendmime == "") { $sendmime = "application/stream"; }

header ("HTTP/1.1 200 OK");
header("Content-type: ".$sendmime);
header("Content-Length: $tailleFichier");
header('Content-Transfer-Encoding: binary');
header("Content-Disposition: attachment; filename=\"$fichier_xls\"");
//readfile($fichier);
$fp=fopen($fichier_xls, "r");
fpassthru($fp);
flush();
?>
24/04/2007 @ 11:44:40: zion: [PHP] Comment envoyer le bon type MIME
http://fr.php.net/manual/en/function.mime-content-type.php

Voir la nouvelle fonction :smile:
24/04/2007 @ 12:02:33: gizmo: [PHP] Comment envoyer le bon type MIME
j'ai vu, mais ni cette fonction, ni son hypothetique remplacante ne sont dispo sur la plupart des hebergeurs, donc je ne peux pas les utiliser. En fait, j'esperais un systeme miracle, un peu comme quand OS X reconnait le type du fichier meme apres lui avoir changer l'extension, mais en fait ils gardent cela dans des meta-donnes, donc c'est foutu.

Va faloir que je me paluche une table de correspondance a la main :ohwell:
24/04/2007 @ 12:05:47: philfr: [PHP] Comment envoyer le bon type MIME
Va faloir que je me paluche une table de correspondance a la main :ohwell:


Ou que tu ne changes pas l'extension...
24/04/2007 @ 12:08:14: gizmo: [PHP] Comment envoyer le bon type MIME
euh, ouais mais non, parce que .htm, .html doivent avoir le meme contentType retourne, et .xhtml pourrait egalement l'avoir si c'est du XHTML 1.0
24/04/2007 @ 12:13:06: zion: [PHP] Comment envoyer le bon type MIME
Va faloir que je me paluche une table de correspondance a la main :ohwell:


Ou que tu changes d'hébergeur :dawa:

Chez ovh ils acceptent le dl() donc à la limite tu pourrais même loader l'extension kivabien si ils l'ont pas activées
24/04/2007 @ 12:14:07: gizmo: [PHP] Comment envoyer le bon type MIME
Le principe, c'est que je ne veux pas etre dependant de l'hebergeur, vu que c'est destine a un libre usage :oh:
24/04/2007 @ 12:17:44: zion: [PHP] Comment envoyer le bon type MIME
  1. echo system("file -i -b file.pdf");


Comment ça non? :ddr555:

Il te faut rien non plus, une fonction qui existe sans la moindre extension et avec safe mode :ddr555:

Alors oui faudra le refaire à la main :itm:
Retour