2009-04-21 4 views
5

La riga dell'oggetto indica la maggior parte di ciò che sto chiedendo. Ho un sito web che genera report in vari formati (HTML, CSV, TSV, Excel, ecc.). Quando possibile, mi piacerebbe che questi file venissero visualizzati nel browser. A tal fine, ho impostato le mie intestazioni in modo che "Content-Disposition" sia "in linea". Questo funziona in modo molto incoerente con diversi tipi di file. Sembra che sia in FF3 che in IE7, l'HTML si apra sempre automaticamente in linea. Ciò ha senso. Se utilizzo TSV, entrambi i browser richiedono il download, poiché si tratta di un tipo di file sconosciuto sul mio sistema. Anche questo ha senso ed è esattamente quello che voglio. Excel e CSV, tuttavia, offrono comportamenti diversi. In FF, entrambi richiedono sempre il download o l'apertura. Se scelgo "open", si apre in una nuova finestra. In IE, sia sia prompt per il download o l'apertura - Non riesco a capire questo fuori. Ho pensato che i file Excel si aprissero automaticamente in linea con Content-Disposition: inline. Se scelgo "open" in IE, si apre in linea nel browser.file serviti con content-disposition: inline a volte richiede il download

Qualcuno può spiegare il comportamento imprevisto? Questo non è un problema per me, ma i miei utenti pensano che sia un bug, quindi una fonte autorevole che posso citarli sarebbe eccellente. L'unica cosa che ho trovato finora su questo "problema" è un post di 1 riga su un forum di Mozilla su come la cosa auto-open-inline è uno dei difetti di sicurezza di IE ... era un vecchio post, quindi forse è stato "risolto" in IE7? Grazie.

risposta

0

Verificare che il server stia servendo il tipo MIME corretto per i file CSV ed Excel. Per trattarli correttamente, anche un browser che riconosce il loro tipo e ha un gestore di file/plugin per loro avrà bisogno del tipo MIME corretto.

Probabilmente si desidera che il tipo MIME di entrambi per essere application/vnd.ms-excel

Se si sta servendo questi con il vostro web server come file normali, quindi l'impostazione rilevante in Apache è il mime.types file.

application/vnd.ms-excel xls csv 

Se si sta servendo questi file dalla vostra applicazione, allora avrete bisogno di aggiungere il Content-Type: application/vnd.ms-excel intestazione te.

Nota che per alcuni utenti potresti non riuscire mai a farlo funzionare come previsto, ad esempio a chiunque non disponga di Microsoft Office installato, oa nessuno che utilizza un browser alternativo o che ha modificato le associazioni dei tipi di file.

(per il vostro interesse, this article descrive la procedura - capita di essere in grado Plone/Zope ma l'idea è la stessa).

+0

Grazie per la risposta, ma non penso che mi aiuti molto ... il tipo di contenuto viene impostato correttamente. Sto usando text/csv come tipo di contenuto per CSV, in conformità con RFC4180. Ho lo stesso comportamento sulle scatole usando MS Office e Open Office, tranne che quest'ultimo non si apre mai in linea nel browser. Sto usando IIS, btw. – rmeador

3

Potreste aver risolto questo già, ma se non posso avere una risposta (per le persone future con lo stesso problema, anche questo mi ha spinto noci!)

Questo comportamento può essere sovrascritto sul client, utilizzando il seguente:

  1. Vai a Windows Explorer
  2. Selezionare Strumenti -> Opzioni cartella
  3. “Tipi di file”
  4. Selezionare Tab
  5. Find estensione “DOC” (o “PDF , Ecc)
  6. Selezionare “Avanzate”
  7. Tick/Deselezionare “Conferma apertura dopo download”, se lo desideri.

Il meccanismo utilizzato per implementare la funzionalità di anteprima/download è tramite l'utilizzo dell'intestazione "content-disposition", solitamente utilizzando MimeType "application /". In pratica, questo indica al client locale di aprire l'applicazione utilizzando l'applicazione specificata, tuttavia le impostazioni di cui sopra per l'applicazione possono sovrascrivere il formato di consegna richiesto.

+0

Grande: risolvi un problema prima di una distribuzione;) – alepuzio

Problemi correlati