How can I present a file for download from an MVC controller?

mvc download file ajax
download file in mvc
mvc download file stream
download pdf file in mvc c#
mvc download file on button click
mvc response download file
mvc force file download
asp net mvc download file attachment

In WebForms, I would normally have code like this to let the browser present a "Download File" popup with an arbitrary file type, like a PDF, and a filename:

''# Send the file to the output stream
Response.Buffer = True

Response.AddHeader("Content-Length", pdfData.Length.ToString())
Response.AddHeader("Content-Disposition", "attachment; filename= " & Server.HtmlEncode(filename))

''# Set the output stream to the correct content type (PDF).
Response.ContentType = "application/pdf"

''# Output the file

''# Flushing the Response to display the serialized data
''# to the client browser.

How do I accomplish the same task in ASP.NET MVC?

Return a FileResult or FileStreamResult from your action, depending on whether the file exists or you create it on the fly.

public ActionResult GetPdf(string filename)
    return File(filename, "application/pdf", Server.UrlEncode(filename));

How To Download a File in MVC, Provide an easy way to download file in MVC. in form of bytes) or file is physically present on application server inside the application Following is a simple code snippet which can be used as Action in MVC Controller. mvc download file link (4) Return a FileResult or FileStreamResult from your action, depending on whether the file exists or you create it on the fly. public ActionResult GetPdf(string filename) { return File(filename, "application/pdf", Server.UrlEncode(filename)); }

To force the download of a PDF file, instead of being handled by the browser's PDF plugin:

public ActionResult DownloadPDF()
    return File("~/Content/MyFile.pdf", "application/pdf", "MyRenamedFile.pdf");

If you want to let the browser handle by its default behavior (plugin or download), just send two parameters.

public ActionResult DownloadPDF()
    return File("~/Content/MyFile.pdf", "application/pdf");

You'll need to use the third parameter to specify a name for the file on the browser dialog.

UPDATE: Charlino is right, when passing the third parameter (download filename) Content-Disposition: attachment; gets added to the Http Response Header. My solution was to send application\force-download as the mime-type, but this generates a problem with the filename of the download so the third parameter is required to send a good filename, therefore eliminating the need to force a download.

Upload and download files using ASP.NET MVC – Rachel Appel, To start, we need a view and controller pair to upload a file. This is the same HTML and MVC code that you already know. However, there is no� In the following sample, we will see how we can leverage the FileResult action to download files in an ASP.NET MVC Web Application. Step 1: Open VS2010 and create a new ASP.NET MVC 3 project, name it as ‘MVC3_Returning_Files’.

You can do the same in Razor or in the Controller, like so..

    //do this on the top most of your View, immediately after `using` statement
    Response.ContentType = "application/pdf";
    Response.AddHeader("Content-Disposition", "attachment; filename=receipt.pdf");

Or in the Controller..

public ActionResult Receipt() {
    Response.ContentType = "application/pdf";
    Response.AddHeader("Content-Disposition", "attachment; filename=receipt.pdf");

    return View();

I tried this in Chrome and IE9, both is downloading the pdf file.

I probably should add I am using RazorPDF to generate my PDFs. Here is a blog about it:

Spring MVC Download File Controller Example, In Spring MVC application, to download a resource such as a file to the browser, you need to do the following in your controller. Use the void return type for your request-handling method and add HttpServletResponse as an argument to the method. Set the response's content type to the file's content type. Creates a FileContentResult object by using the file contents and file type. Creates a FilePathResult object by using the file name, the content type, and the file download name. Creates a FileContentResult object by using the file contents and file type. protected internal System.Web.Mvc

You should look at the File method of the Controller. This is exactly what it's for. It returns a FilePathResult instead of an ActionResult.

How to handle download return File Result from controller ? MVC , What is wrong with my download of a zip file from an ASP ApiController with file not found than return response as resource not present response = Request. This article explains how to download multiple files in compressed format using ASP.NET MVC 5. There are several ways to download multiple files in zip format but this article explains the easiest way in a step by step process. Background We can download multiple files using zip format, from different sources to the destination locations, such


You can do this to return a FileStream:

/// <summary>
/// Creates a new Excel spreadsheet based on a template using the NPOI library.
/// The template is changed in memory and a copy of it is sent to
/// the user computer through a file stream.
/// </summary>
/// <returns>Excel report</returns>
public ActionResult NPOICreate()
        // Opening the Excel template...
        FileStream fs =
            new FileStream(Server.MapPath(@"\Content\NPOITemplate.xls"), FileMode.Open, FileAccess.Read);

        // Getting the complete workbook...
        HSSFWorkbook templateWorkbook = new HSSFWorkbook(fs, true);

        // Getting the worksheet by its name...
        HSSFSheet sheet = templateWorkbook.GetSheet("Sheet1");

        // Getting the row... 0 is the first row.
        HSSFRow dataRow = sheet.GetRow(4);

        // Setting the value 77 at row 5 column 1

        // Forcing formula recalculation...
        sheet.ForceFormulaRecalculation = true;

        MemoryStream ms = new MemoryStream();

        // Writing the workbook content to the FileStream...

        TempData["Message"] = "Excel report created successfully!";

        // Sending the server processed data back to the user computer...
        return File(ms.ToArray(), "application/", "NPOINewFile.xls");
    catch(Exception ex)
        TempData["Message"] = "Oops! Something went wrong.";

        return RedirectToAction("NPOI");

How do I download file from the server in MVC, Sir, How do I handle the situation , incase file is not present in the folder. How do I handle the error ? I do not want user to see that error message . Maybe this post could be useful: Download File Using Javascript/jQuery. I believe the JQuery File Download plugin deserves some attention, it handles errors gracefully :) Have a look on its online demo, too

Spring MVC File Upload Example Tutorial, Spring File Upload,Spring MVC File Upload example MultipartFile, Upload Form Views; 1.3 Spring MVC Multipart Configuration; 1.4 Spring File Upload Controller Class Download the project from the above link and play around with it to learn more. Getting status 400-Required String Parameter 'name' is not present. Rather than displaying a PNG in the browser window, I'd like the action result to trigger the file download dialogue box (you know the open, save as, etc). I can get this to work with the code below using an unknown content type, but the user then has to type in .png at the end of the file name.

Create or Generate PDF file in ASP.NET MVC, A default action method named Index will be present in HomeController.cs. and include the following code snippet to create an PDF file and download it. c#. basically if we don't give a ajax call still we can download file through window.location it's only because we need ajax request we are using the same in success function thanks for the help.! – rohit singh Jun 8 '15 at 8:57

Create, read, and edit Excel files in ASP.NET MVC, A default action method named Index will be present in HomeController.cs. and include the below code snippet to create an Excel file and download it. c#; VB. Download file in mvc using ajax @MikesDotnetting has written a good article on this How to upload and download the file in mvc. you can also use following code. [HttpGet] public FileResult DownloadDataFile(long widgetId) { using (var mem = new MemoryStream()) { // Create spreadsheet based on widgetId

  • This is a great example of why ASP.NET MVC awesome. What you previously had to do in 9 lines of confusing looking code can be done in one line. So much easier!
  • Thanks tvanfosson, I searched for the best solution to do this, and this is great.
  • This requires a file extension on the filename or otherwise it will completely ignore the filename and contenttype and just try to stream the file to the browser. It will also just use the webpage name if the browser doesn't recognize the contenttype (i.e. octet-stream) when it forces the download and it will not have an extension at all.
  • Technically that's not what is happening. Technically when you add the third parameter, the MVC framework adds the header content-disposition: attachment; filename=MyRenamedFile.pdf - this is what forces the download. I would suggest you put the MIME type back to application/pdf.
  • Thank you Charlino, I didn't realized the third parameter was doing that, I thought it was just to change the filename.
  • +1 for updating your answer and explaining the third parameter + Content-Disposition: attachment; relationship.