Suggest filename to client when you generate it at runtime

Many times I’ve to generate a report file from a web pages.
To do this I create a genericHandler that query the Database and compose a string comma separated.

context.Response.ContentType = "text/csv";
context.Response.Write("data1,data2,data3,data4\r\ndata21,data22,data23,data24");
context.Response.Flush();

with only this code you generated a csv file but no filename will be passed to the client.
To achieve this add the code below before call Flush() method

string fileName = "DataExport.csv";

string contentDisposition;
if (context.Request.Browser.Browser == "IE" && (context.Request.Browser.Version == "7.0" || context.Request.Browser.Version == "8.0"))
    contentDisposition = "attachment; filename=" + Uri.EscapeDataString(fileName);
else if (context.Request.Browser.Browser == "Safari")
    contentDisposition = "attachment; filename=" + fileName;
else
    contentDisposition = "attachment; filename*=UTF-8''" + Uri.EscapeDataString(fileName);

context.Response.AddHeader("Content-Disposition", contentDisposition);
Annunci

Informazioni su Andrea Regoli

Project Manager .Net Developer WPF WP7 Asp.Net c# javascript ajax SQL sharepoint
Questa voce è stata pubblicata in .Net, Asp.Net, c# e contrassegnata con , , , , . Contrassegna il permalink.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...