Page 1 sur 1
utilisation de la classe SplFileInfo...
Posté : 22 mars 2008, 20:28
par BeRoots
salut à tous
je recherche à utiliser la classe SplFileInfo, et plus précisement la fonction DirectoryIterator::getType() pour detection et affichage du type MIME d'un fichier...
j'ai essayer ceci:
Code : Tout sélectionner
<?php
echo '<p>Le type est: '.DirectoryIterator::getType().'</p>';
?>
mon soucis est que j'ai le message d'erreur suivant:
Fatal error: Non-static method SplFileInfo::getType() cannot be called statically in C:\www\test.php on line 54
si quelqu'un peut m'aider

merci d'avance...
Posté : 22 mars 2008, 20:43
par titerm
Tu fais appel a la methode getType de facon statique hors elle n'est pas statique, elle s'applique a l'iterateur courant.
Il faut d'abord instancier un DirectoryIterator sur une directorie de ton choix puis faire appel a la methode
foreach ( new DirectoryIterator('./') as $file )
{
echo $file. ':' . $file->getType() . '<br />';
}
}
Posté : 22 mars 2008, 21:43
par Hywan
Ça fait beaucoup d'accolades fermantes tout ça ...

Posté : 22 mars 2008, 22:47
par BeRoots
oki merci
par contre ce n'est pas du tous ce que je souhaitai faire en fait... je souhaite afficher le type MIME d'un Fichier
j'ai regarder dans la doc et j'ai vue que
Mimetype etait dépressié... il conseil d'ailleur
Fileinfo mais cette extension n'est pas disponible sur mon hebergeur
je ne trouve pas de methode pour definir le type MIME d'un fichier
Si quelq'un peu m'aider

Posté : 23 mars 2008, 11:37
par titerm
Il n'y a helas pas beaucoup de choix...
Soit tu fais un truc basé sur les extensions, et donc pas forcément fiable mais souvent assez pour que ca fonctionne.
Soit tu reprend le meme principe que fileinfo qui est en fait un truc équivalent au file unix basé sur les magic cookie. Une analyse toute bête des premier octets du fichier. Je crois avoir déjà vu des classes php reprenant l'équivalent de fileinfo.
Posté : 23 mars 2008, 15:46
par BeRoots
oki, je vait regarder du coté de chez mon hebergeur si il n'y a pas moyen de disposer de Fileinfo.
sinon j'ai essayer ceci via mime_content_type(); qui est devenu obselete mais j'ai ce message d'erreur:
Fatal error: Call to undefined function mime_content_type() in C:\test.php on line 56
n'y a t'il pas oyen de faire en sorte d'avoir possibilité d'utiliser cett fonction quand même?
Posté : 23 mars 2008, 16:50
par Hywan
En PHP 5.3 tu as un nouveau niveau d'erreur qui fait son apparition : E_DEPRECATED. Attention donc

.
J'ai fais un paquetage alternatif à FileInfo (dans le cas où il est désactivé). Je me base sur l'extension, et je me sers du fichier d'Apache pour associer les mime-type au extension (et inversement). Ce fichier est stocké ici : apache2/conf/mime.types si mes souvenirs sont bons.
Si les sources de FileInfo sont disponibles, je suis preneur

.
Posté : 24 mars 2008, 12:28
par Calimero
Rien de tel que les commandes natives de GNU/Linux pour ce genre de besoin :
<?php
$fichier='/etc/hosts';
echo exec('file -i '.escapeshellarg($fichier));
?>
Posté : 25 mars 2008, 22:02
par BeRoots
ok j'ai regarder dans les type MIME apache mais je ne trouve rien en ce qui concerne certains type mime...
quel sont les type mime de .pdf .doc (ms word) et .odt (openoffice writer) ?
si quelqu'un peut m'orienter

Posté : 25 mars 2008, 22:14
par Hywan
PDF : application/pdf
Word : application/msword
pour les ODT, je ne l'ai pas dans mon fichier d'Apache. Une petite recherche devrait t'aider à trouver la réponse

.
Posté : 27 mars 2008, 02:15
par BeRoots
pour les odt et autre format open office, j'ai rajouté à mon httpd.conf ceci (source sur le site de OOO

)
Code : Tout sélectionner
##
# ajout des type MIME openoffice2.org
##
AddType application/vnd.stardivision.chart .sds
AddType application/vnd.stardivision.calc .sdc
AddType application/vnd.stardivision.writer .sdw
AddType application/vnd.stardivision.writer-global .sgl
AddType application/vnd.stardivision.draw .sda
AddType application/vnd.stardivision.impress .sdd
AddType application/vnd.stardivision.math .sdf
AddType application/vnd.sun.xml.writer .sxw
AddType application/vnd.sun.xml.writer.template .stw
AddType application/vnd.sun.xml.writer.global .sxg
AddType application/vnd.sun.xml.calc .sxc
AddType application/vnd.sun.xml.calc.template .stc
AddType application/vnd.sun.xml.impress .sxi
AddType application/vnd.sun.xml.impress.template .sti
AddType application/vnd.sun.xml.draw .sxd
AddType application/vnd.sun.xml.draw.template .std
AddType application/vnd.sun.xml.math .sxm
AddType application/vnd.oasis.opendocument.text .odt
AddType application/vnd.oasis.opendocument.text-template .ott
AddType application/vnd.oasis.opendocument.text-web .oth
AddType application/vnd.oasis.opendocument.text-master .odm
AddType application/vnd.oasis.opendocument.graphics .odg
AddType application/vnd.oasis.opendocument.graphics-template .otg
AddType application/vnd.oasis.opendocument.presentation .odp
AddType application/vnd.oasis.opendocument.presentation-template .otp
AddType application/vnd.oasis.opendocument.spreadsheet .ods
AddType application/vnd.oasis.opendocument.spreadsheet-template .ots
AddType application/vnd.oasis.opendocument.chart .odc
AddType application/vnd.oasis.opendocument.formula .odf
AddType application/vnd.oasis.opendocument.database .odb
AddType application/vnd.oasis.opendocument.image .odi
j'espere que sa servira à d'autre
@HyWan: serai il possible de voir ton packetage alternatif à FileInfo ou au moins la methode utiliser?
merci d'avance
Posté : 27 mars 2008, 08:41
par Hywan
Je ne l'ai pas encore documenter et il est tout tout petit, basé sur les extensions, donc c'est pas ultra top, mais ça dépanne. Je l'avais créer à la base pour construire des mime-types et compagnie, pas pour retrouver le mime-type à partir d'une extension. Mais il peut servir à ça. C'est une des conséquences de l'analyse et gestion des mime-types.
Tu peux le trouver dans Hoa : paquetage Mime. Tu peux jeter un œil aux sources sur l'SVN. Je te recommande d'aller sur le site :
http://hoa-project.net, puis dans la partie téléchargement. Tu auras tous les liens nécessaires

.
Posté : 30 mars 2008, 21:27
par BeRoots
oki merci
je vais voir ce qu'il en est
