Reputation: 8188
I have a file on my desktop for test. I am trying to display it in a view that looks like this:
@{
ViewBag.Title = "ShowFile";
}
<h2>ShowFile</h2>
The code I am using for the controller is:
[HttpGet]
public ActionResult ShowFile(string path)
{
path = @"C:\Documents and Settings\nickla\Desktop\nlamarca_06_15.pdf";
return File(path, "application/pdf", "nlamarca_06_15.pdf");
}
When I run this code the view displays "undefined" any ideas on what could be wrong here?
Upvotes: 4
Views: 10175
Reputation: 1038710
You don't seem to have specified the filename in your path:
public ActionResult ShowFile(string filename)
{
var path = @"C:\Documents and Settings\nickla\Desktop";
var file = Path.Combine(path, filename);
file = Path.GetFullPath(file);
if (!file.StartsWith(path))
{
// someone tried to be smart and sent
// ?filename=..\..\creditcard.pdf as parameter
throw new HttpException(403, "Forbidden");
}
return File(file, "application/pdf");
}
Upvotes: 8
Reputation: 22485
Nick,
Appears at 1st look to be a path issue (no filename, only path), try:
[HttpGet]
public ActionResult ShowFile(string path)
{
path = @"C:\Documents and Settings\nickla\Desktop\nlamarca_06_15.pdf";
return File(path, "application/pdf", "pdf_download_name.pdf");
}
the final parameter is purely the name that you want the downloaded file to be given as it 'hits' the users local drive.
[Edit] I see you've updated your question, which invalidates all of the suggestions so far. The only addition that I can see is that you may not have a route setup that handles the path parameter. this question could be a moving target :)
Upvotes: 0
Reputation: 218702
You are missing the file name in the path. your path only up to the directory. Give the full PDF file name.
public ActionResult ShowFile(string path)
{
//not sure why you overwrote although you have a parameter to pass the path
path = @"C:\Documents and Settings\nickla\Desktop\nlamarca_06_15.pdf";
return File(path, "application/pdf", "nlamarca_06_15.pdf");
}
Assuming the PDF file name you have in that particular directory is nlamarca_06_15.pdf
Upvotes: 2