DailyCoding > Web

How to force a file to download in ASP.NET

This article is about how we can force the user to dowload a particlar file or file type by adding the content-disposition header
Author admin on Jun 16, 2008 11 Comments
Rate it    (Rated 4 by 118 people)
30,015 Views

There are lots of file type which can be handled by IE (or other browsers Firefox, Opera etc.) like html, xml, jpeg, gif, swf, pdf, doc etc. In case the browser can not handle the a particular file type it will ask you to open or save that file. Sometime you may want to force the user to download a particular file even though browser can open that file type because of any of your business need. This can be easily achieved by adding the content-disposition header in the response of your page.

Take below example. Here we are writing a gif file in response and forcing the user to download this file.

protected void Page_Load(object sender, EventArgs e)
{
  Response.Clear();
  Response.AddHeader("content-disposition", "attachment;filename=logo_large.gif");
  
  Response.ContentType = "image/GIF";
  Response.WriteFile(Server.MapPath(@"~/logo_large.gif"));
  
  Response.End();
}

If you see above code then you can notice we can also specify the file name. This technique will work for other file types too.

ASP.NET | Web
 

Discussion

Mark Laycock On Jul 27, 2008 02:51 AM
Interesting but it doesn't indicate where the code should be inserted (between which tags, etc) - as a newbie I'm trying to get people to download PDF files from web pages (but not open in the browser) but not having any success in coding this.

Ramesh Soni On Jul 27, 2008 11:04 PM
Mark, The code needs to be placed in the code behind ".cs" of the page and there should be no tags in the ".aspx" page except the @Page attribute on the top. Let me know in case you face any problem.

Rajasekhar On Nov 11, 2008 06:17 AM
It's working, but if Download file formate is Html. I don't want to open that page is same window where I made the button click for download. I want open in different window what are changed I need to chage for above code

Ravi On Mar 7, 2011 06:55 AM
hi,
But this is not work properly

Life Is Delightful On Apr 11, 2011 09:54 PM
This code worked for me. But I want to know what all content types are available...

Ramesh Soni On Apr 11, 2011 10:39 PM
@Life is Delightful, you can get all content and their mime types from here -
http://www.dailycodi...._file_extension.aspx

mytrash On Apr 28, 2011 06:31 AM
Nice piece of code, on this post the VB.NET version that let's you download all kind of files:
http://it-things.com....force-file-download/

mitu On Dec 31, 2011 07:22 AM
it works for me. great post. keep it up.
thanks for the post.

mitu On Dec 31, 2011 07:22 AM
it works for me. great post. keep it up.
thanks for the post.

Umer On Feb 14, 2012 10:26 PM
It works fine when i place this code in Page_Load but when I put the same code in some click event (lets say on some button click than nothing shows up )

can anyone help me plz

Thanks in advance

Andrea On Apr 12, 2012 03:07 AM
The downloading of file works but my page didn't visualize as adding a new header (for the file) would delete the http header of the page instead to append the new header.
How can I both load the page and downolad the file?
thanks

Leave a Comment

Name
Email Address
Web Site