Правильно идентифицируйте docx pptx xlsx и другие файлы msoffice, а не приложение / zip - PullRequest
1 голос
/ 10 ноября 2011

В настоящее время я работаю над сценарием perl, который должен разрешить загрузку файла, а затем обработать его и затем отправить его на принтер.

http://code.google.com/p/web-printer-http/

Очевидно,и zip, и файлы Microsoft Office, оканчивающиеся на «... x», идентифицируют себя как application / zip при использовании /usr/bin/file.

Есть идеи отличить их?

Различия должныне основаны на расширении, поскольку система загрузки может быть не в состоянии использовать расширения (например, мобильные телефоны и т. д.).Скорее, он должен судить содержание полностью на основе содержимого файла.

1 Ответ

3 голосов
/ 10 ноября 2011

Невозможно провести различие между файлом .zip и файлом Office Open XML (например, .docx, xslx, .pptx и т. Д.), Не заглядывая внутрь zip.

Все различные форматы открытого XML используют сжатие .ZIP. Поэтому они являются файлами zip.

Если zip-файл соответствует Open Packaging Convention , то это также может быть документ Open XML (Office).

Хорошая эвристика, если zip-файл содержит файл с именем /[Content_Types].xml, то это OPC-файл. Чтобы определить, содержит ли файл zip файл с таким именем, вы должны прочитать каталог zipfile. Используйте zip-библиотеку, чтобы сделать это.

...