2011-10-05 12 views
5

Una delle azioni del mio controller restituisce un file all'utente. Vorrei che l'utente fosse presentato con la finestra di dialogo di download (apri/salva), indipendentemente dal tipo di file. Funziona bene quando il tipo di file è .doc, .docx, .xlsx, ecc., Ma quando il file è .txt, .xps, .pdf (a volte) o .html, si apre nel browser.Asp.net MVC FileContentResult - impedisce l'apertura nel browser

C'è un modo per impedire l'apertura del file nel browser e consentire solo all'utente di aprirlo in una finestra separata senza allontanarsi dalla pagina corrente?

La richiesta per il file viene effettuata utilizzando jQuery .

Correlato: Avere il browser gestire la richiesta e dare il popup in contrapposizione alla chiamata AJAX ricevendo il conent del file come una stringa di risposta è spiegato da this ansewr, ma questa domanda indirizza costringendo il browser a gestire il file in un in un certo modo una volta ricevuto.

risposta

5

Non penso che sia possibile farlo con un comando o un'impostazione sul lato client. Dovresti fare qualcosa sul server in modo che restituisca un tipo di contenuto di application/octet-stream per ogni file. In caso contrario, il browser esaminerà il file in arrivo e deciderà cosa fare in base alle proprie regole e capacità.

Se si può fare questo sul vostro server, provare a impostare l'intestazione "Content-Disposition"-"attachment; filename=whatever.xyz"

+0

Questo produce lo stesso risultato di 'application/unknown', che, purtroppo, è una cosa che sto cercando di evitare. Per comodità dell'utente sarebbe meglio consentire loro di aprire il file con un clic (non solo nella finestra corrente del browser). – yoozer8

+0

Se è possibile eseguire questa operazione sul server, provare a impostare l'intestazione "Content-Disposition" su "attachment; filename = whatever.xyz" – Ray

+0

È esattamente così. Grazie. – yoozer8

Problemi correlati