2009-06-24 8 views
9

Devo essere in grado di avere una sottodirectory di immagini di tutti i PNG da scaricare invece di aprire nella finestra del browser. Sto usando IIS per il server web.Force PNG da scaricare invece di aprire nel browser con IIS

C'è un modo per forzare il download di un PNG?

+0

Serverfault.com è probabilmente un posto migliore per porre questa domanda. – Nate

+1

Beh, non sapeva che nothisfault.com! –

risposta

1

Tutte le soluzioni che ho provato lo rendono in modo che possa essere scaricato in altri browser tranne IE. IE sta cercando di essere "utile" e decide ciò che pensa sarebbe meglio server il client, in questo caso viene visualizzato il file png nel browser.

C'è sempre il modo programmatico per farlo, come indicato. Ma non stavo cercando di seguire quella strada.

Alla fine ho zippato singolarmente i 67 file PNG e li ho collegati. Non è carino ma funziona.

Grazie a tutti per l'aiuto.

+0

Grazie. Ha funzionato perfettamente con server 2008 e IIS 7.5 testati in IE 9, 8 e Firefox, ecc ... –

2

Non si può se si servire direttamente il file PNG, ma se si utilizza ASP, è possibile aggiungere:

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

Dovete inviare questa intestazione al browser:

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

I non ho idea di come farlo usando IIS.

27

Come gli altri utenti hanno detto, è necessario aggiungere l'intestazione Content-Disposition HTTP, con un valore di allegato, alla risposta HTTP generata da IIS quando si servono i PNG in questione.

Non sono sicuro quale versione di IIS che si utilizza non sono che:

IIS6

  1. In Gestione IIS selezionare la directory con i file PNG e aprire la finestra di
  2. Fare clic sulla scheda Intestazioni HTTP Properties .
  3. Nella sezione Intestazioni HTTP personalizzate, fare clic su Aggiungi.
  4. Viene visualizzata una finestra di dialogo. Nel campo "Nome intestazione personalizzata" inserisci "Content-disposition". Nel "Campo personalizzato-intestazione valore, immettere "Allegato"
  5. potrebbe essere necessario riavviare IIS (iisreset)

Per IIS7:.

  1. In Gestione IIS selezionare la directory con il File PNG e selezionare la vista Funzionalità
  2. Fare doppio clic sull'intestazione di risposta HTTP e quindi selezionare l'opzione Aggiungi nel menu di destra
  3. Viene visualizzata una finestra di dialogo. Nel campo "Nome" immettere "Contenuto-disposizione Nel campo "Valore", inserire " Allegato".
  4. Potrebbe essere necessario riavviare IIS (iisreset)

In alternativa, collocare il web.config nella cartella con i file:

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

Questo dovrebbe forzare il PNG servita da tale directory ad essere scaricabile .

+1

Questo non funziona con IE. – RedWolves

+1

Hmm, ho avuto problemi con questa intestazione in IE in passato se i nomi dei file contenevano caratteri riservati URI ad esempio ':'. Sono contento che tu abbia trovato comunque una soluzione. –

+0

Non è necessario reimpostare IIS. Tutte le modifiche di web.config funzionano al volo. Anche questo funziona perfettamente con IE9 e IE10. Infatti, tutti i browser che ho provato (IE, Chrome, FF e Safari) funzionano bene per JPG, PNG, MP3 e MPG. –

0

Probabilmente, la mia risposta è obsoleto, ma si spera che possa essere utile per qualcuno ...

Come gli altri utenti hanno detto, è necessario aggiungere l'intestazione di risposta HTTP 'Content-Disposition'.

Il problema potrebbe essere visualizzato se non è possibile utilizzare Gestione IIS e utilizzare la riga di comando.

Quindi, se avete bisogno di aggiungere questo un'intestazione di risposta HTTP piuttosto utilizzando solo riga di comando, è possibile utilizzare tale costruzione:

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

Si aggiungerà un'intestazione di risposta HTTP 'Content-Disposition' per il vostro '/ percorso/to/images 'del tuo' Sito Web predefinito '.

Questo può essere utile nel caso in cui si esegua la configurazione automatica del proprio IIS con un paio di script o file BAT/CMD.

Problemi correlati