Mime_type .docx

selig

New member
#1
Guten morgen zusammen,

ich wollte mir gestern ein kleines Script in PHP basteln, welches mir Dateien zum Download anbietet die in einem Verzeichnis liegen.


der wesentliche Code dazu:

PHP:
$finfo = new finfo();
$type = $finfo->file($pfad, FILEINFO_MIME);

header("Content-Type: $type");
header("Content-Disposition: attachment; filename=\"$file\"");
readfile("$pfad);
Das funktioniert bei .pdf, .doc, .xls und soweiter - Allerdings nicht mit .docx (hier wird mir ein ZIP-Archiv angedreht :D - ja ich weiß dass es sich dabei tatsächlich um gezippte XMLs handelt :) )
Was mich verwirrt ist, dass er xlsx aber richtig erkennt!

Ich hab nen Apache2 unter Ubuntu 14.04 am laufen. Anscheinend soll der Apache unter Ubuntu und Debian auf die Datei /etc/mime.types zurückgreifen - dort sind aber die Extensions hinterlegt!
Ich würde das ungerne mit .htaccess-Files lösen, sondern möchte eine saubere globale Lösung!

Hat hierzu jemand schon Erfahrungen und kann mir da helfen? :)


Danke schonmal :)

Grüße
 

selig

New member
#3
Erstmal danke, ich hab mir deinen Link angeschaut - das hat leider nicht geholfen.
Ich habe auf der MS-Seite den folgenden Link gefunden
Office 2007 MIME types for Apache | Vlad Mazek – Vladville Blog

Allerdings hat das auch nichts geholfen,... die Formate sind bei mir bereits in der
/etc/mime.types hinterlegt ...

Code:
pplication/vnd.openxmlformats-officedocument.presentationml.presentation      pptx
application/vnd.openxmlformats-officedocument.presentationml.slide               sldx
application/vnd.openxmlformats-officedocument.presentationml.slideshow        ppsx
application/vnd.openxmlformats-officedocument.presentationml.template          potx
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet               xlsx
application/vnd.openxmlformats-officedocument.spreadsheetml.template           xltx
application/vnd.openxmlformats-officedocument.wordprocessingml.document    docx
application/vnd.openxmlformats-officedocument.wordprocessingml.template      dotx
xlsx nimmt er ja richtig - docx leider nicht! Den Rest ab ich noch nicht getestet.

Kleiner aber nicht unerheblicher Nachtrag:
.docx-Dateien, die mit LibreOffice generiert wurden, werden als ZIP deklariert,... die mit dem originalen Office generierten, werden korrekt ausgegeben!
Gibts dazu irgendwelche Infos?


Grüße
Selig
 

selig

New member
#5
Ja genau... Bei den .docx Dokumenten aus LibreOffice spuckt er es als ZIP aus...

Wenn ich das File mit WinRar öffne sieht es in der Content-XML auch geringfügig anders aus, als beim "echten" Office.
Bringt mir nur nichts xD
 

Chakky

Member of Honour
#6
Was ist der Hintergrund das auf korrekte Mimetypes angewiesen bist? Vielleicht findet man eine andere Lösung? Kann man ggf LibreOffice Dokumente noch anders erkennen und dann manuell den Mimetyp setzen?
 

selig

New member
#7
Ich möchte halt, dass der Browser einem gleich die korrekte Anwendung vorschlägt mit der man die Datei öffnen kann,....

Wenn ich z.B. application/octet-stream wähle, bietet mir der Browser nur "Datei Speichern" - klar besser als die falsche Anwendung, aber trotzdem :D
Ich möchte mich nur ungern auf die Dateiendung verlassen da ich möchte, dass Dateien hochgeladen werden können.
 

selig

New member
#9
Danke, ja ich glaub ich hab das alles entsprechend abgesichert - es wäre nur "hübscher" gewesen :D :D

Trotzdem danke,

vll mach ich für die LibreOffice Geschichte ein kleines Workaround im Code :)

Danke
 
#11
Also ich habe im Netz was gefunden, womit das ganze mit Magic gemacht werden kann
validation - DOCX File type in PHP finfo_file is application/zip - Stack Overflow

Werde es aufgrund meiner momentanen Faulheit in PHP machen

Nachdem ich das MimeType Ergebnis von finfo() habe, prüfe ich ob der gelieferte Wert "application/zip" ist und die Dateiendung .docx
entsprechend werde ich den Mime-Type dann auf "application/vnd.openxmlformats-officedocument.wordprocessingml.document" ändern - nicht schön, müsste aber gehen :D

Natürlich wäre es mit Magic schöner, aber aktuell hab ich keine Motivation (Nachtschicht gehabt xD )


Grüße
 
Oben