файлы, обслуживаемые с помощью content-disposition: встроенные файлы иногда запрашивают загрузку - PullRequest
5 голосов
/ 21 апреля 2009

В моей теме написано большинство из того, что я спрашиваю. У меня есть веб-сайт, который выводит отчеты в различных форматах (HTML, CSV, TSV, Excel и т. Д.). Когда бы ни было возможно, я хотел бы, чтобы эти файлы были показаны в браузере. Для этого я настроил свои заголовки так, чтобы «Content-Disposition» был «встроенным». Это работает очень противоречиво с различными типами файлов. Похоже, что и в FF3, и в IE7 HTML всегда будет автоматически открываться. В этом есть смысл. Если я использую TSV, оба браузера будут запрашивать загрузку, так как это неизвестный тип файлов в моей системе. Это также имеет смысл, и это именно то, что я хочу. Excel и CSV, однако, предлагают разные варианты поведения. В FF оба всегда запрашивают загрузку или открытие. Если я выберу «открыть», он откроется в новом окне. В IE оба также запрашивают загрузку или открытие - я не могу понять это. Я думал, что файлы Excel открываются автоматически при помощи Content-Disposition: inline. Если я выберу «открыть» в IE, он откроется в браузере.

Может кто-нибудь объяснить неожиданное поведение? На самом деле это не проблема для меня, но мои пользователи считают, что это ошибка, так что авторитетный источник, на который я могу ссылаться, был бы превосходным. Единственное, что я нашел до сих пор об этой «проблеме», - это пост в одной строке на форуме Mozilla о том, что функция автоматического открытия строк является одним из недостатков безопасности IE ... это был старый пост, так что, возможно, это так. было "исправлено" в IE7? Спасибо.

Ответы [ 2 ]

3 голосов
/ 07 декабря 2009

Возможно, вы уже решили эту проблему, но если нет, у меня может быть ответ (для будущих людей с такой же проблемой это меня и сводило с ума!)

Это поведение может быть перезаписано на клиенте с использованием следующего:

  1. Перейти к Windows Explorer
  2. Выберите Инструменты -> Параметры папки
  3. Выберите вкладку «Типы файлов»
  4. Найти расширение «DOC» (или «PDF» и т. Д.)
  5. Выберите «Дополнительно»
  6. Установите или снимите флажок «Подтвердить открытие после загрузки».

Механизм, используемый для реализации функций предварительного просмотра / загрузки, заключается в использовании заголовка «content-disposition», обычно с использованием MimeType «application /». В основном это говорит локальному клиенту, что нужно открыть приложение, используя указанное приложение, однако приведенные выше настройки для приложения могут перезаписать запрошенный формат доставки.

0 голосов
/ 21 апреля 2009

Убедитесь, что ваш сервер обслуживает правильный тип MIME для файлов CSV и Excel. Чтобы обращаться с ними должным образом, даже браузеру, который распознает их тип и имеет для них обработчик / плагин типа файла, потребуется правильный тип MIME.

Вы, вероятно, захотите, чтобы MIME-тип обоих был application / vnd.ms-excel

Если вы используете их на своем веб-сервере в виде обычных файлов, то соответствующим параметром в Apache является файл mime.types.

application/vnd.ms-excel xls csv

Если вы обслуживаете эти файлы из своего приложения, вам нужно добавить заголовок Content-Type: application / vnd.ms-excel самостоятельно.

Обратите внимание, что для некоторых пользователей вы никогда не сможете заставить его работать должным образом - например, для тех, у кого не установлен Microsoft Office, или даже для тех, кто использует альтернативный браузер, или кто испортил свои ассоциации типов файлов. *

(для вашего интереса, эта статья описывает процедуру - она ​​может быть в состоянии Plone / Zope, но идея та же).

...