I am writing an application in MVC4.
I have a physical pdf file on the server. I want to convert this to a memory stream and send it back to the user like this:
Worked it out
var pdfContent = new MemoryStream(System.IO.File.ReadAllBytes(imageLocation));
pdfContent.Position = 0;
return new FileStreamResult(pdfContent, "application/pdf");
Use an overload that uses a filename, see here. It's the easiest solution when you have a physical file.
You don't need MemoryStream
. Easiest way is to use overload that accepts file name:
return File(@"C:\MyFile.pdf", "application/pdf");
another solution is to use overload that accepts byte[]
:
return File(System.IO.File.ReadAllBytes(@"C:\Myfile.pdf"), "application/pdf");
or if you want use FileStream
:
return File(new FileStream(@"C:\MyFile.pdf", FileMode.Open, FileAccess.Read), "application/pdf");