Вопрос по – Принудительно загружать PNG вместо открытия в браузере с IIS

9

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

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

Ну, он не знал его nothisfault.com! Binoj Antony
Serverfault.com, вероятно, лучшее место, чтобы задать этот вопрос Nate

Ваш Ответ

5   ответов
27

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

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

IIS6

In the IIS Manager select the directory with the PNG files and open the Properties dialog Click the HTTP Headers tab. In the Custom HTTP Headers section, click Add. A dialog appears. In the "Custom-header name" field enter "Content-disposition". In the "Custom-header value field, enter "Attachment". You may have to restart IIS (iisreset)

Для IIS7:

In the IIS Manager select the directory with the PNG files and select the Features view. Double-click the HTTP Response Headers item and then choose the Add option in the right-hand menu. A dialog appears. In the "Name" field enter "Content-disposition". In the "Value" field, enter "Attachment". You may have to restart 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, обслуживаемые из этого каталога, быть загружаемыми.

Отлично работал в IIS Web.config для защиты содержимого определенной папки, в которую пользователи имеют доступ для загрузки файлов (предотвращает выполнение любых загруженных сценариев и вызывает диалог загрузки). Спасибо!
Нет необходимости сбрасывать IIS. Все изменения web.config работают на лету. Это также хорошо работает с IE9 и IE10. На самом деле, во всех браузерах, которые я пробовал (IE, Chrome, FF и Safari), это прекрасно работает для JPG, PNG, MP3 и MPG.
Хм, у меня были проблемы с этим заголовком в IE в прошлом, если имена файлов содержали зарезервированные символы URI, например, ":". Рад, что ты все равно нашел обходной путь.
Это не работает с IE. RedWolves
0

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

Как говорили другие авторы, вам нужно добавить 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-файлов.

2

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

Response.AddHeader("Content-Disposition", "attachment");
1

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

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

1

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

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

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

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

Благодарю. Отлично работал с использованием сервера 2008 и IIS 7.5, протестированных в IE 9, 8, Firefox и т. Д.

Похожие вопросы