ugrás a tartalomhoz

Ms Word2007 aka. DOCX fájl mimetype meghatározás PHP-val

joed · 2010. Okt. 7. (Cs), 22.20
Sziasztok!

Már jó párszor belefutottam, hogy .docx fájlok fel/letöltésével kell bajlódnom. A visszatérő mumus, hogy a PHP beépített Fileinfo modulja (5.3 előtt PECL modul) nem tudja megbízhatóan azonosítani az új Word formátum mime típusát. A hasonló OpenXML formátumra épülő ODT fájlokét szépen levadássza. Az egész oda vezethető vissza, hogy még a PHP 5.3.2-be integrált libmagic sem képes felismerni a DOCX fájlokat. A környezet, amiben működnie kellene egyébként Debian Lenny + Zend Server 5.0.2.

Tehát a kérdés, hogy van-e valakinek ötlete, hogyan lehetne beazonosítani a DOCX fájlokat. Nyilvánvaló, hogy a kiterjesztés alapján való meghatározás nem játszik, és jó lenne elkerülni a mime magic adatbázis módosítást/hexa minta vadászatot.

Előre is köszi!
 
1

ja igen.

joed · 2010. Okt. 8. (P), 10.41
A megoldás jelenleg úgy néz ki, hogy a mime típus meghatározását betettem egy burkoló fv-be, és ha egy fájl típusa "application/zip" vagy "multipart/x-zip", akkor megnézi, hogy az archívumban létezik-e a "word/document.xml". Ha van, bingó: a fájlunk docx.
Ti is láthatjátok, hogy ez nem túl elegáns megoldás, de egyelőre működik.

Vki jobb ötlet?
2

Tudom, hogy a kérdés nem pont

prom3theus · 2010. Okt. 8. (P), 22.18
Tudom, hogy a kérdés nem pont ez, viszont kapcsolódik: az alábbit a .htaccess-hez adva legalább a letöltéseknél nem lesz probléma az újabb MSO-s formátumokkal.
AddType	application/vnd.ms-word.document.macroEnabled.12				.docm
AddType	application/vnd.openxmlformats-officedocument.wordprocessingml.document		.docx
AddType	application/vnd.ms-word.template.macroEnabled.12				.dotm
AddType	application/vnd.openxmlformats-officedocument.wordprocessingml.template		.dotx
AddType	application/vnd.ms-powerpoint.template.macroEnabled.12				.potm
AddType	application/vnd.openxmlformats-officedocument.presentationml.template		.potx
AddType	application/vnd.ms-powerpoint.addin.macroEnabled.12				.ppam
AddType	application/vnd.ms-powerpoint.slideshow.macroEnabled.12				.ppsm
AddType	application/vnd.openxmlformats-officedocument.presentationml.slideshow		.ppsx
AddType	application/vnd.ms-powerpoint.presentation.macroEnabled.12			.pptm
AddType	application/vnd.openxmlformats-officedocument.presentationml.presentation	.pptx
AddType	application/vnd.ms-excel.addin.macroEnabled.12					.xlam
AddType	application/vnd.ms-excel.sheet.binary.macroEnabled.12				.xlsb
AddType	application/vnd.ms-excel.sheet.macroEnabled.12					.xlsm
AddType	application/vnd.openxmlformats-officedocument.spreadsheetml.sheet		.xlsx
AddType	application/vnd.ms-excel.template.macroEnabled.12				.xltm
AddType	application/vnd.openxmlformats-officedocument.spreadsheetml.template		.xltx
Ezeket a MIME típusokat anno ha jól emlékszem az MS egyik KB oldalán találtam, eddig korrektül működnek.
3

itt a megoldás

joed · 2010. Okt. 8. (P), 22.44
Végül megtaláltam a megoldást. A hiba forrása ugye, hogy a Debian Lenny mime típus adatbázisa )mime-support (3.44-1) csomag) nem ismeri az új MSO formátumokat. A következő release (squeeze) azonos csomagja viszont már frissült (mime-support (3.48-1)) és támogatja az új formátumokat. Backport vagy verziófrissítés a jelenleg stabil Lenny számára nincs, mivel van még néhány nyitott bug és mint tudjuk, Debian-éknál nem divat lezáratlan tickettel release-elni.

Tehát a megoldás, hogy a Squeeze mime-support csomagjából (3.48-1) ki kell guberálni a mime.types adatbázisfájlt és cserélni a /etc/mime.types fájllal.
Squeeze mime-support csomag:
http://packages.debian.org/source/squeeze/mime-support

Megemlítendő, hogy mivel jelenleg nem stable verzió a csomag, mindenki saját felelősségére használja!

Egyébként átnéztem a bugokat és nem találtam olyat, ami az adatbázis fájl használatával összeköthető lenne, tehát én merem használni production környezetben.