Изображения не показываются в IE, Firefox / Chrome / другие хорошо! - PullRequest
0 голосов
/ 06 декабря 2010

Мне нужно использовать Этот класс для сервера нескольких файлов (img / video / mp3) с сайта для написания статьи, который я использую, единственная и главная проблема заключается в том, что: Все изображения в статьях должныбыть отображенным этим классом, и что этот класс не показывает изображения (инициирует загрузку при вызове по URL).Мне удалось это исправить, удалив эту строку (возможно, строку 107)

header('Content-Disposition:attachment; filename="'.$this->properties["name"].'";');

, которая хорошо мне показала изображения из chrome и firefox, но IE все еще инициирует загрузку :(.

Есть ли способ / заголовки, чтобы это исправить?

Редактировать:

Я добавил следующее в мета-тип:

case "jpg": $content_type="image/".$file_extension; break; 
case "gif": $content_type="image/".$file_extension; break; 
case "png": $content_type="image/".$file_extension; break; 

Ответы [ 2 ]

0 голосов
/ 06 декабря 2010

С настройкой Content-Disposition до вложение фактически предназначено для использования без непосредственного отображения ресурса:

Части тела могут быть обозначены как "вложение'чтобы указать, что они отделены от основной части почтового сообщения, и что их отображение не должно быть автоматическим, а зависит от некоторых дальнейших действий пользователя.

Но хотя Content-Disposition поле заголовка скорее является частью MIME, а не частью HTTP, «было предложено в качестве средства для исходного сервера предложить имя файла по умолчанию, если пользователь запрашивает содержимоесохранено в файл ». (См. HTTP / 1.1 - 19.5 Дополнительные функции )

В дополнение к этому, использование специального типа носителя application / octet-stream Рекомендуется подразумевать загрузку:

Если этот заголовок используется в ответе с типом содержимого application / octet-stream, подразумевается, чтопользовательский агент не должен отображать ответ, а непосредственно вводить диалоговое окно «сохранить ответ как ...».

Но так как вы хотите, чтобы ресурс отображался напрямую, используйте Content-Диспозиция значение inline вместо.При этом вы также можете использовать параметр filename , чтобы указать имя файла, отличное от URL.

См. Также Тестовые случаи для заголовка HTTP Content-Disposition Джулиана Решкеполе и кодировки, определенные в RFC 2047 и RFC 2231/5987 для получения дополнительной информации о кодировках, используемых для кодирования параметра filename .

0 голосов
/ 06 декабря 2010

Я предполагаю, что IE по-прежнему требовался действительный заголовок Content-Type (при условии, что класс не предоставляет его для изображений, поскольку он просто принудительно загружал). Вероятно, нужно изменить этот кусок кода:

switch( $file_extension ) { // the file type
  case "mp3": $content_type="audio/mpeg"; break;
  case "mpg": $content_type="video/mpeg"; break;
  case "avi": $content_type="video/x-msvideo"; break;
  case "wmv": $content_type="video/x-ms-wmv";break;
  case "wma": $content_type="audio/x-ms-wma";break; 
  default: $content_type="application/force-download";
} 

и добавьте расширения изображений и связанный с ними тип MIME.

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