使用IIS强制下载PNG而不是在浏览器中打开

使用IIS强制下载PNG而不是在浏览器中打开,iis,png,Iis,Png,我需要能够有一个子目录的图像所有PNG的下载,而不是在浏览器窗口打开。我正在为web服务器使用IIS 有没有办法强制PNG可下载?如果您直接提供PNG,则无法下载,但如果您使用ASP,则可以添加: Response.AddHeader("Content-Disposition", "attachment"); 您必须将此标题发送到浏览器: Content-Disposition:attachment; filename="downloaded.pdf" 我不知道如何使用IIS来实现这一点。正

我需要能够有一个子目录的图像所有PNG的下载,而不是在浏览器窗口打开。我正在为web服务器使用IIS


有没有办法强制PNG可下载?

如果您直接提供PNG,则无法下载,但如果您使用ASP,则可以添加:

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

您必须将此标题发送到浏览器:

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

我不知道如何使用IIS来实现这一点。

正如其他海报所说,您需要在为相关PNG提供服务时,向IIS生成的HTTP响应添加HTTP内容处置头,该头的值为attachment

不确定您使用的IIS版本,但:

IIS6

  • 在IIS管理器中,选择包含PNG文件的目录并打开“属性”对话框
  • 单击HTTP标题选项卡
  • 在自定义HTTP头部分中,单击添加
  • 此时会出现一个对话框。在“自定义标题名称”字段中输入“内容处置”。在“自定义标题值”字段中,输入“附件”
  • 您可能必须重新启动IIS(iisreset)
  • 对于IIS7:

  • 在IIS管理器中,选择包含PNG文件的目录,然后选择Features视图
  • 双击HTTP响应头项,然后选择右侧菜单中的添加选项
  • 此时会出现一个对话框。在“名称”字段中输入“内容处置”。在“值”字段中输入“附件”
  • 您可能必须重新启动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可以下载。

    我尝试过的所有解决方案都可以在除IE之外的其他浏览器中下载。IE试图提供“帮助”,并决定它认为最适合客户端的服务器,在这种情况下,是在浏览器中显示png文件

    正如前面所指出的,总是有一种程序化的方法来实现这一点,但我并不想走这条路

    最后,我将67个PNG文件单独压缩并链接到这些文件上。虽然不好看,但效果不错


    谢谢大家的帮助。

    也许我的答案已经过时了,但希望它能对某人有用


    正如其他海报所说,您需要添加HTTP“Content Disposition”响应头

    如果您不能使用IIS管理器并且必须使用命令行,则可能会出现此问题

    因此,如果只需要使用命令行添加这个漂亮的HTTP响应头,可以使用以下构造:

    %systemroot%\system32\inetsrv\APPCMD set config "Default Web Site/path/to/images" /section:httpProtocol /+customHeaders.[name='Content-disposition',value='Attachment']
    
    它将为“默认网站”的“/path/to/images”文件夹添加HTTP“Content Disposition”响应头


    如果您使用几个脚本或BAT/CMD文件自动配置IIS,这将非常有用。

    Serverfault.com可能是问这个问题的更好地方。他不知道它不是isfault.com!嗯,如果文件名包含URI保留字符,例如“:”.Gla,我过去在IE中遇到过这个头的问题d您找到了一个解决方法。无需重置IIS。所有web.config更改都可以动态工作。这也适用于IE9和IE10。事实上,我尝试过的所有浏览器(IE、Chrome、FF和Safari)这适用于JPG、PNG、MP3和MPG。在IIS Web.config中工作得非常好,可以保护用户有权将文件上载到的特定文件夹的内容(防止执行任何上载的脚本并强制进行下载对话框)。谢谢!谢谢。使用在IE 9、8和Firefox等中测试的server 2008和IIS 7.5,工作得非常好。。。