#iis #zip #ms-office
#iis #zip #ms-office
Вопрос:
Я знаю основную причину проблемы загрузки (скажем) PPTX с веб-сайта и его загрузки в формате ZIP (формат файла Office 2007 переименован в zip), и я знаю, как это исправить на веб-сервере (добавить типы MIME).
Но мне интересно понять, почему это происходит, и механизм процесса был выполнен веб-сервером и веб-браузером. Я знаю, что HTTP-трафик можно естественным образом архивировать и разархивировать (gzip) для повышения производительности, поэтому я предполагаю, что это также может быть частью проблемы.
Например, предполагается, что имя файла и путь передаются обратно браузеру по HTTP. Это веб-сервер переименовывает расширение или веб-браузер?
Небольшая блок-схема была бы идеальной.
Комментарии:
1. Было бы здорово, если бы вы взяли какое-нибудь приложение-менеджер загрузки (например. Download Master), который может отображать подробный журнал, включая отправленные и полученные заголовки, и фиксировать этот журнал. Не видя этого, трудно догадаться, что происходит в вашей конкретной конфигурации сервера.
Ответ №1:
Приношу извинения за ответ на эту очень старую тему, но, надеюсь, это полезная информация.
Причиной переименования файлов pptx (или docx) в zip является комбинация действий как веб-сервера, так и браузера. Скорее всего, веб-сервер не был настроен для обработки файлов pptx, поэтому он отправляет их с типом содержимого: текстовый / обычный. Некоторые браузеры (например, Chrome и Firefox) могут сказать «хорошо, я вам верю» и просто сохранить файл в соответствии с вашими инструкциями. Другие браузеры (например, MSIE) могут сказать «Я просто проверю это»; и они проверяют содержимое файла, которое указывает на ZIP-файл. Итак, если у MSIE где-то есть опция «не проверять типы MIME при загрузке файлов», то это то, что вам нужно.
Другое решение заключается в веб-сервере, которому действительно необходимо отправлять контент типа: application/ mspowerpoint или аналогичный. Если у вас есть подходящий доступ к веб-серверу, вам просто нужно добавить в файл .htaccess строку с надписью AddType application/mspowerpoint .pptx, которая заставит сервер отправить заголовок Content-type, который MSIE правильно интерпретирует.
Ответ №2:
1) Вероятно, веб-браузер использует магические числа для определения типа файла на основе первых нескольких байтов файла (обычно это какой-то заголовок для двоичных файлов).
Как вам известно, файлы Office 2007 упаковываются как zip, и поэтому браузер (когда у него нет никакой информации MIME, которая могла бы помочь) начинает загрузку файла, видит заголовок zip и, таким образом, сохраняет его (или предлагает вам сохранить его) как zip-файл.
Мне это кажется странным поведением браузера, я бы ожидал, что он сохранит имя файла (и расширение), указанное сервером, но это может варьироваться в зависимости от браузеров и от того, какой именно тип MIME предоставлен (или не предоставлен).
2) Альтернативно, сервер может делать то же самое, когда у него нет типа MIME, связанного с определенным расширением файла. Он может проверить начало файла и обнаружить, что он выглядит как zip-файл, поэтому отправит файл обратно клиенту с типом zip MIME.
Вы могли бы исключить сервер, выполняющий любое угадывание типа MIME, проверяя HTTP-ответ или необработанные пакеты (на стороне сервера или клиента) с помощью чего-то вроде Wireshark.
3) Архивирование не будет проблемой, это происходит на более низком уровне и не связано с типами MIME.
Ответ №3:
Лучшее объяснение, которое я нашел — как в отношении того, почему это происходит, так и в отношении того, как это исправить, — это http://blogs.msdn.com/b/asiatech/archive/2012/03/28/office-documents-will-be-recognized-as-zip-file-when-downloading-from-ie.aspx .