Установка Response.ContentType="image/tiff" в asp.net 1.1, и IE7 не отображает файлы tif
У меня есть приложение Asp.Net 1.1, которое использует следующий код для записи файла изображения на всплывающую веб-страницу.
Response.ContentType="image/tiff" 'Only for Tif files
Dim objStream As Object
objStream = Server.CreateObject("ADODB.Stream")
objStream.open()
objStream.type = 1
objStream.loadfromfile(localfile)
Response.BinaryWrite(objStream.read)
Я тестирую это с файлами TIF. Файлы отображаются правильно в IE6 и Safari, но в IE7 они не отображаются, и кажется, что ничего не возвращается на веб-страницу. Файлы с расширениями jpg, gif отображаются правильно. В чем может быть проблема здесь?
3 ответа
Ну, это зависит от вашей аудитории. Но в идеале для поддержки устаревших браузеров не следует предполагать, что они могут обрабатывать TIFF.
Как минимум, загрузите TIFF, выберите первый кадр (страницу), выполните DrawImage в новом растровом изображении, сохраните растровое изображение в виде JPG в потоке памяти и отправьте его в Response.
Если вы не знакомы с манипулированием изображениями GDI + в.NET или это звучит сложно, обратитесь за советом к http://www.bobpowell.net/faqmain.htm. Каждый из этих шагов можно выполнить всего несколькими строками кода. Если вы еще не знаете GDI+, его стоит изучить любому веб-разработчику. Это может сделать это "трудным (но безопасным) способом", стоящим только для образования. И если вы уже знаете, как, это займет не полчаса.
Если вы должны отображать многостраничные TIFF-файлы и хотите, чтобы пользователь управлял отображением страниц, вам нужно создать пользовательский интерфейс для установки номера страницы. Если вы пытаетесь отобразить несколько TIFF на страницу, это может оказаться нетривиальным, поэтому попробуйте отобразить все страницы TIFF#1 на первой веб-странице или разрешить им просматривать последующие страницы TIFF, ссылаясь на другую веб-страницу с Предыдущие / следующие кнопки страницы TIFF. Это должна быть общая страница, которая принимает имя файла и номера текущей страницы (кнопки "предыдущий / следующий" будут указывать на себя с +/- одним номером страницы) в качестве параметров URL.
Если вы знаете, что вы будете показывать только текстовые документы вместо фотографий, попробуйте отправлять в браузер однокадровые GIF-файлы вместо TIFF-файлов, чтобы уменьшить Jpegginess текста. Но до предупреждения - фотографии могут выглядеть довольно плохо в GIF.
Вы пробовали установить для Content-Disposition значение Inline?
Response.AppendHeader("Content-Disposition", "inline");
Да, попробовал это только сейчас. Не работает Это как-то связано с тем, что tiff имеет 4 буквы вместо 3. Я где-то читал, что IE7 не поддерживает 4-буквенные расширения.