Search code examples
c#response

C# Asp.net write file to client


I hope this is a quick question I hope. I need to write some reports and then have the user prompted to save it to his/her local machine. The last time I did this I wrote a file to the webserver and then sent it to the client via Response object.

to create on the webserver

            TextWriter tw = new StreamWriter(filePath);

to send to client

           page.Response.WriteFile(path);

The question is, Is there a way to skip the writing of the physical file to to the webserver and go right from an object that represent the document to the response?


Solution

  • You could use the Response.ContentType like this

    Response.ContentType = "text/plain";
    Response.OutputStream.Write(buffer, 0, buffer.Length);
    Response.AddHeader("Content-Disposition", "attachment;filename=yourfile.txt");
    

    This of course works if you want to write a text file. In case you want to write a .doc for example you change the ContentType to "application/msword" etc...