2009-06-24 21 views
9

Ich muss in der Lage sein, ein Unterverzeichnis von Bildern alle PNGs heruntergeladen werden, anstatt im Browser-Fenster geöffnet werden. Ich verwende IIS für den Webserver.Erzwingen PNG zum Download statt Öffnen im Browser mit IIS

Gibt es eine Möglichkeit, ein PNG zum Herunterladen zu zwingen?

+0

Serverfault.com ist wahrscheinlich ein besserer Ort, um diese Frage zu stellen. – Nate

+1

Nun, er kannte seine nothisfault.com nicht! –

Antwort

1

Alle Lösungen, die ich ausprobiert habe, machen es so, dass es in anderen Browsern außer IE heruntergeladen wird. IE versucht, "hilfreich" zu sein und entscheidet, was es für den Client am besten hält, in diesem Fall wird die PNG-Datei im Browser angezeigt.

Es gibt immer die programmatische Art, dies zu tun, wie darauf hingewiesen wurde. Aber ich wollte diesen Weg nicht gehen.

Am Ende habe ich die 67 PNG-Dateien einzeln gezippt und mit diesen verknüpft. Es ist nicht schön, aber es funktioniert.

Vielen Dank für die Hilfe.

+0

Danke. Arbeitete perfekt mit Server 2008 und IIS 7.5 in IE 9, 8 und Firefox usw. getestet ... –

2

Sie können nicht, wenn Sie die PNG-Dateien direkt dienen, aber wenn Sie ASP verwenden, können Sie hinzufügen:

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

Sie haben diesen Header an den Browser zu senden:

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

I habe keine Ahnung, wie man das mit IIS macht.

27

Wie die anderen Poster gesagt haben, müssen Sie der HTTP-Antwort, die von IIS beim Versenden der fraglichen PNGs generiert wird, den Header HTTP Content Disposition mit einem Anhangswert hinzufügen.

Nicht sicher, welche Version von IIS Sie sind aber:

IIS6

  1. Im IIS-Manager das Verzeichnis mit den PNG-Dateien auswählen und öffnen Sie die Eigenschaften-Dialog
  2. Klicken Sie auf die Registerkarte HTTP-Header .
  3. Klicken Sie im Abschnitt Benutzerdefinierte HTTP-Header auf Hinzufügen.
  4. Ein Dialogfeld wird angezeigt. Im Feld "Benutzerdefinierter Header" geben Sie "Content-Disposition" ein. Im „Wertefeld Benutzerdefinierte-Header, geben Sie "Anhang"
  5. Sie müssen IIS neu starten kann (iisreset)

Für IIS7.

  1. im IIS-Manager wählen Sie das Verzeichnis mit der PNG-Dateien und wählen Sie die Ansicht Funktionen
  2. Doppelklicken Sie auf das Element HTTP-Antwortheader und wählen Sie dann im rechten Menü die Option Hinzufügen
  3. Ein Dialogfeld wird angezeigt.Im Feld "Name" geben Sie "Content-disposition ". Im Feld" Wert "geben Sie" Befestigung".
  4. Sie müssen IIS neu starten kann (iisreset)

Alternativ legen diese web.config im Ordner mit Dateien:

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

Dies ist die PNGs diente aus diesem Verzeichnis zwingen sollte herunterladbare sein .

+1

Dies funktioniert nicht mit IE. – RedWolves

+1

Hmm, ich hatte in der Vergangenheit Probleme mit diesem Header im IE, wenn die Dateinamen URI reservierte Zeichen enthielten, zB ':'. Froh, dass du trotzdem einen Workaround gefunden hast. –

+0

Kein Zurücksetzen von IIS erforderlich. Alle web.config-Änderungen funktionieren im laufenden Betrieb. Dies funktioniert auch mit IE9 und IE10. In der Tat, alle Browser, die ich versuchte (IE, Chrome, FF und Safari) das funktioniert gut für JPG, PNG, MP3 und MPG. –

0

Wahrscheinlich meine Antwort veraltet ist, aber hoffentlich kann es für jemanden ...

nützlich sein, als die anderen Plakate gesagt haben, müssen Sie die HTTP ‚Content-Disposition‘ Antwort-Header hinzuzufügen.

Das Problem kann auftreten, wenn Sie den IIS-Manager nicht verwenden können und die Befehlszeile verwenden müssen.

Also, wenn Sie diese hübschen HTTP-Response-Header mit der Befehlszeile nur hinzufügen müssen, können Sie ein solche Konstruktion verwendet werden:

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

Es wird HTTP 'Content-Disposition' Antwort-Header für Ihren ‚/ Pfad hinzufügen/to/images-Ordner Ihrer 'Standard-Website'.

Dies kann nützlich sein, falls Sie eine automatische Konfiguration Ihres IIS mit ein paar Skripten oder BAT/CMD-Dateien durchführen.

Verwandte Themen