I have an MVC project that will display some documents to users. The files are currently stored in Azure blob storage.
Currently, the documents are retrieved from th
Thanks to all the answers, the solution was a combination of all of them.
First, because I was using a byte[]
the controller action needed to be FileContentResult
not just FileResult
. Found this thanks to: What's the difference between the four File Results in ASP.NET MVC
Second, the mime type needed to NOT be a octet-stream
. Supposedly, using the stream causes the browser to just download the file. I had to change the type application/pdf
. I will need to explore a more robust solution to handle other file/mime types though.
Third, I had to add a header that changed the content-disposition
to inline
. Using this post I figured out I had to modify my code to prevent duplicate headers, since the content-disposition was already being set to attachment
.
The successful code:
public FileContentResult GetDocument(string zipCode, string loanNumber, string classification, string fileName)
{
byte[] doc = _docService.GetDocument(zipCode, loanNumber, classification, fileName);
string mimeType = "application/pdf"
Response.AppendHeader("Content-Disposition", "inline; filename=" + fileName);
return File(doc, mimeType);
}
It looks like someone else asked a similar question a while ago:
how to force pdf files to open in a browser
With an answer saying that you should use the header:
Content-Disposition: inline; filename.pdf
Browsers should decide on downloading or displaying based on mime-type.
Try this:
string mimeType = "application/pdf";
Just return PhysicalFileResult and use HttpGet method ,url will open pdf file
public ActionResult GetPublicLink()
{
path = @"D:\Read\x.pdf";
return new PhysicalFileResult(path, "application/pdf");
}