Почему PPTX загружается в виде ZIP-файла с веб-сайта? - PullRequest
3 голосов
/ 19 мая 2011

Я знаю основную причину проблемы загрузки (скажем) PPTX с веб-сайта и его загрузки в формате ZIP (формат файла Office 2007 переименован в zip), и я знаю, как это исправить на веб-сервере (добавить MIME типы).

Но мне интересно понять, почему это происходит, и механика процесса выполняется веб-сервером и веб-браузером. Я знаю, что HTTP-трафик может быть естественно упакован и разархивирован (gzip) для повышения производительности, поэтому я предполагаю, что это также может быть частью проблемы.

Например, предполагается, что имя файла и путь передаются обратно в браузер по HTTP. Это веб-сервер переименовывает расширение или веб-браузер?

Идеально подойдет небольшая блок-схема.

Ответы [ 3 ]

5 голосов
/ 23 октября 2012

Извините за ответ на эту очень старую тему, но, надеюсь, это полезная информация.

Причиной того, что файлы pptx (или docx) переименовываются в zip, является сочетание действий как веб-сервера, так и браузера. Скорее всего, веб-сервер не был настроен для обработки файлов pptx, поэтому он отправляет их с Content-Type: text / plain . Некоторые браузеры (например, Chrome и Firefox) могут сказать «хорошо, я вам верю» и просто сохранить файл под вашим руководством. Другие браузеры (например, MSIE) могут сказать: «Я просто проверю это»; и они проверяют содержимое файла, которое указывает ZIP-файл. Итак, если у MSIE есть опция «не проверять MIME-типы при загрузке файлов», то это то, что вам нужно.

Другое решение заключается в веб-сервере, который действительно должен отправлять Тип контента: application / mspowerpoint или аналогичный. Если у вас есть подходящий доступ к веб-серверу, вам просто нужно добавить в файл .htaccess строку с именем Приложение AddType / mspowerpoint .pptx , которая заставит сервер отправлять заголовок Content-type, который MSIE будет корректно выполнять. интерпретировать.

3 голосов
/ 19 мая 2011

1) Вероятно, веб-браузер использует магические числа для определения типа файла, основываясь на первых нескольких байтах файла (обычно это какой-то заголовок для двоичных файлов).

Как вам известно, файлы Office 2007 упаковываются в zip-архивы, и поэтому браузер (когда в нем нет информации MIME для справки) начинает загрузку файла, видит заголовок zip и сохраняет его (или предлагает сохранить его) в виде zip-файла.

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

2) В качестве альтернативы сервер может делать то же самое, если с ним не связан тип MIME, связанный сконкретное расширение файла.Он может проверить начало файла и обнаружить, что он выглядит как zip-файл, поэтому передаст файл обратно клиенту с zip-типом MIME.

Вы можете исключить сервер, угадающий любой тип MIMEпутем проверки ответа HTTP или необработанных пакетов (на стороне сервера или клиента) с помощью чего-то вроде Wireshark .

3) Gzipping не будет проблемой, которая происходит на более низком уровне ине относится к типам MIME.

0 голосов
/ 24 июня 2013

Лучшее объяснение, которое я нашел - и то, почему это происходит, и как это исправить - это http://blogs.msdn.com/b/asiatech/archive/2012/03/28/office-documents-will-be-recognized-as-zip-file-when-downloading-from-ie.aspx.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...