Принудительно загружать PNG вместо открытия в браузере с IIS - PullRequest
9 голосов
/ 24 июня 2009

Мне нужно иметь возможность иметь подкаталог изображений для загрузки всех PNG-файлов вместо открытия в окне браузера Я использую IIS для веб-сервера.

Есть ли способ заставить PNG быть загружаемым?

Ответы [ 5 ]

27 голосов
/ 24 июня 2009

Как говорили другие авторы, вам нужно добавить заголовок HTTP Content-Disposition со значением вложения к HTTP-ответу, сгенерированному IIS при обслуживании рассматриваемых PNG.

Не знаю, какую версию IIS вы используете, но:

IIS6

  1. В диспетчере IIS выберите каталог с файлами PNG и откройте диалоговое окно «Свойства»
  2. Перейдите на вкладку «Заголовки HTTP».
  3. В разделе пользовательских заголовков HTTP нажмите кнопку Добавить.
  4. Появится диалоговое окно. В поле «Имя пользовательского заголовка» введите «Content-disposition». В поле «Значение пользовательского заголовка» введите «Вложение».
  5. Возможно, вам придется перезапустить IIS (iisreset)

Для IIS7:

  1. В диспетчере IIS выберите каталог с файлами PNG и выберите представление «Функции».
  2. Дважды щелкните элемент HTTP Response Headers и затем выберите опцию Add в правом меню.
  3. Появится диалоговое окно. В поле «Имя» введите «Content-disposition». В поле «Значение» введите «Вложение».
  4. Возможно, вам придется перезапустить IIS (iisreset)

В качестве альтернативы, поместите этот файл web.config в папку с файлами:

<?xml version="1.0"?>
<configuration>
  <system.webServer>
    <httpProtocol>
      <customHeaders>
        <clear />
        <add name="Content-Disposition" value="Attachment" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>
</configuration>

Это должно заставить PNG, обслуживаемые из этого каталога, загружаться.

2 голосов
/ 24 июня 2009

Вы не можете, если обслуживаете PNG напрямую, но если вы используете ASP, вы можете добавить:

Response.AddHeader("Content-Disposition", "attachment");
1 голос
/ 25 июня 2009

Все решения, которые я пробовал, должны загружаться в других браузерах, кроме IE. IE пытается быть «полезным» и решает, что, по его мнению, лучше всего подходит для сервера клиента, в данном случае это отображение файла png в браузере.

Всегда существует программный способ сделать это, как было указано. Но я не собирался идти по этому пути.

В конце я по отдельности заархивировал 67 файлов PNG и связался с ними. Это не красиво, но работает.

Спасибо всем за помощь.

1 голос
/ 24 июня 2009

Вы должны отправить этот заголовок в браузер:

Content-Disposition:attachment; filename="downloaded.pdf"

Понятия не имею, как это сделать с помощью IIS.

0 голосов
/ 10 октября 2012

Возможно, мой ответ устарел, но, надеюсь, он кому-нибудь пригодится ...

Как говорили другие авторы, вам нужно добавить HTTP-заголовок ответа «Content-Disposition».

Проблема может появиться, если вы не можете использовать IIS Manager и должны использовать командную строку.

Итак, если вам нужно добавить этот красивый заголовок HTTP-ответа только с помощью командной строки, вы можете использовать такую ​​конструкцию:

%systemroot%\system32\inetsrv\APPCMD set config "Default Web Site/path/to/images" /section:httpProtocol /+customHeaders.[name='Content-disposition',value='Attachment']

Он добавит HTTP-заголовок ответа «Content-Disposition» для вашей папки «/ path / to / images» вашего «Веб-сайта по умолчанию».

Это может быть полезно, если вы автоматически конфигурируете свой IIS с помощью пары скриптов или BAT / CMD-файлов.

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