Write a file "on-the-fly" to the client with C#

asp.net, c#

Solution

After some searching and trial and error, I developed the following. It seems to fit the bill exactly. It should be very easily adaptable to PHP or any other server-side software since it mostly involves modifying headers.

protected void streamToResponse()
{
    Response.Clear();
    Response.AddHeader("content-disposition", "attachment; filename=testfile.csv");
    Response.AddHeader("content-type", "text/csv");

    using(StreamWriter writer = new StreamWriter(Response.OutputStream))
    {
        writer.WriteLine("col1,col2,col3");
        writer.WriteLine("1,2,3");
    }
    Response.End();
}

Problem

I'm using C# and ASP.NET 2.5. I want a simple way to generate a "file" on-the-fly (let's say a csv file for this example) and transmit it to the client without actually writing it to the server file system.

Original source