Как изображение подается с URL-адреса с расширением ASPX? - PullRequest
3 голосов
/ 26 января 2011

Может кто-нибудь сказать, как создать такой вид URL

, например, если вы видите URL

http://office.microsoft.com/global/images/default.aspx?assetid=ZA103873861033

, вы будете перенаправлены на изображение ..

мой вопрос, хотя этот URL является изображением .. его расширение aspx .. как это возможно.как создать такой вид URL

Спасибо

Ответы [ 5 ]

4 голосов
/ 26 января 2011

Установив ContentType в ответе от сервера

  HttpContext.Response.ContentType = "image/jpeg";
4 голосов
/ 26 января 2011

Это распространенный метод отображения изображения, которое хранится в виде двоичного объекта в базе данных. Один учебник, среди многих, можно найти здесь .

По сути, они используют страницу aspx, чтобы принять параметр URL, который сообщает им, какое изображение нужно извлечь из базы данных. Затем в ответе они очищают все выходные данные и заголовки, устанавливают заголовки для изображения, записывают двоичные данные в поток ответов и закрывают поток ответов.

Так что на самом деле это не «перенаправление» вас на изображение. Запрашиваемая «страница» оказывается ресурсом изображения в ответе.

0 голосов
/ 26 января 2011

Помимо всех других ответов они могут делать Server.Transfer() (чтобы вы не видели его на стороне клиента) в файл изображения. Это все еще означает, что заголовки ответа устанавливаются на соответствующий тип MIME, но это также означает, что изображение не обязательно поступает из базы данных. Эту технику можно использовать, чтобы скрыть фактический URL изображения в попытках предотвратить хотлинкинг.

0 голосов
/ 26 января 2011

Расширения файлов буквально не имеют значения в WWW.То, что правильно описывает контент по определенному URL-адресу, это тип контента / MIME-тип .Это доставляется в заголовке HTTP , когда URL запрашивается до доставки основной полезной нагрузки HTTP.Другие ответы описывают, как вы могли бы правильно установить это в ASP.NET.

0 голосов
/ 26 января 2011

Самый простой способ - добавить универсальный обработчик * .ashx, и в файле Ashx у вас будет код, за которым вы можете получить строку запроса и манипулировать ответом, например. Response.WriteFile (...)

...