Question

Why this action results an empty file on client side ??

public FileResult download()
{

    MemoryStream stream = new MemoryStream();
    StreamWriter writer = new StreamWriter(stream);

    FileStreamResult fs = new FileStreamResult(stream, "text/plain");
    fs.FileDownloadName = "file.txt";

    writer.WriteLine("this text is missing !!! :( ");

    writer.Flush();
    stream.Flush();

    return fs;                  
}

Was it helpful?

Solution

It could be because the underlying stream (in your case a MemoryStream) is not positioned at the beginning when you return it to the client.

Try this just before the return statement:

stream.Position = 0

Also, these lines of code:

writer.Flush();
stream.Flush();

Are not required because the stream is Memory based. You only need those for disk or network streams where there could be bytes that still require writing.

OTHER TIPS

You can also use

stream.Seek(0, SeekOrigin.Begin);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top