Provide a easy way to download file in MVC.
Introduction
File downloading is a kind of common functionality which we want in our web application. I already have a post http://www.codeproject.com/Tips/663277/File-Download-on-ImageButton-or-Button-Click which provides the code snippet to be used for this functionality in webforms.But now the era has changed. Developers are switching to MVC now and so do there comes a need for file downloading snippet. Mostly File downloading is provided in two ways. File are saved in database (i.e. in form of bytes) or File is physically present on application server inside the application hierarchy. The following snippet works for both the scenarios as it uses the BYTES format to provide file as download.
Background
When I started work in MVC for the first time and when the file download task comes in, I had to google for the solution. So purpose of posting this tip is to help the naive's like me to get the solution in easiest way.Using the code
Following is a simple code snippet which can be used as Action in MVC Controller. It simply picks the file from one folder in application hierarchy, converts it into bytes and return the result as file to View.
Hide Copy Code
public ActionResult DownloadFile()
{
string path = AppDomain.CurrentDomain.BaseDirectory + "FolderName/";
byte[] fileBytes = System.IO.File.ReadAllBytes(path + "filename.extension");
string fileName = "filename.extension";
return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
}
Simply replace the FolderName with the folder in which file is present in project hierarchy, and replacefilename.extension with your filename along with extension to make it work properly.. Simply call this in view using the line below.
Hide Copy Code
@Html.ActionLink("Click here to download", "DownloadFile", new { })
Points of Interest
Many code snippets are available on Google, but I found this one pretty interesting and straight forward for any programmer who is a kind of newbie like myself.
Do give me your feedback, either suggestions, corrections or praises.
No comments:
Post a Comment