It is the default behavior of the web browsers, when you click on the image link, to open the image and display it over there. There are instances when you might want your users to remain on the page and simply download and save the image after clicking on the image link.
This functionality can be achieved in ASP.Net. Here I am going to show how to:
Create a blank ASP.Net Web Application. Now you have to create a folder to store the image to be downloaded and add and image to it.
Your solution should look similar to this:
Open the Default.aspx and create a HyperLink to the image like this:
<asp:HyperLink ID="hlDownloadImage" runat="server" NavigateUrl="~/Images/image001.jpg?Action=Download">Download Image</asp:HyperLink>
Note that the image URL is having additional parameter “Action” with value “Download”. We will see the utilization of the same in a moment.
now go and add a new file of Type ASP.Net Module ImageDownload.cs to the solution and modify the code as below:
public class ImageDownload : IHttpModule { #region IHttpModule Members public void Dispose() { } public void Init(HttpApplication context) { context.BeginRequest += new EventHandler(context_BeginRequest); } #endregion public void context_BeginRequest(object sender, EventArgs e) { HttpApplication app = (HttpApplication)sender; HttpRequest req = app.Request; HttpResponse res = app.Response; if (req.Params["Action"] != null && req.Params["Action"].ToString() == "Download") { string path = req.AppRelativeCurrentExecutionFilePath; res.ContentType = "image/jpeg"; res.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(path)); res.TransmitFile(app.Server.MapPath(path)); res.End(); } } }
Modify the web.config file to include following in <httpModules> section:
<add name="ImageDownload" type="WebUploadManager.ImageDownload"/>
You are done. Run the application and click on the Link for the image and you will see the Run/Save dialog. Try removing the Action parameter from the NavigationURL of the hyperlink; image will be displayed on screen as the default behavior of the browser.
Excellent blog here! Also your web site loads up very fast! What web host are you using? Can I get your affiliate link to your host? I wish my website loaded up as quickly as yours lol
Yes I know … What you mean to say … It is actually very slow. i am looking for host where I can host multiple sites/domains for asp.net and php both.
Didnt know the forum rules alwloed such brilliant posts.
It’s much easier to unedsrtand when you put it that way!
Created the grteaest articles, you have.
Superior thinking dmeontsrtaed above. Thanks!
That\’s a genuinely impressive anwser.
Thanks for the entry, I even learned a lot from it. Really quality content on this blog. Always looking forward to new entry.
Very interesting and cool.. Very nice sharing. Thanks for such a nice post. I really appreciate it.
Hi
I am trying to use your code, i liked it, but i get error in
If i remove “WebUploadManager” from type it works. but then the image opens without dialog box in browser
Please help what i am missing
Thanks
Can you please create a small working sample demo?
Hats off to wohveer wrote this up and posted it.
Boy that rellay helps me the heck out.
Asp.Net Configuration option in Visual Studio.
A full list of settings and comments can be found in
machine.config.comments usually located in
\Windows\Microsoft.Net\Framework\v2.x\Config
–>
This is my web.config? is there something wrong
<!–
The section enables configuration
of the security authentication mode used by
ASP.NET to identify an incoming user.
–>
<!–
The section enables configuration
of what to do if/when an unhandled error occurs
during the execution of a request. Specifically,
it enables developers to configure html error pages
to be displayed in place of a error stack trace.
–>
Your article perfectly shows what I ndeeed to know, thanks!
This has made my day. I wish all psotings were this good.
Sorry i tried to post web.config but it didnt allowed
I think the XML tags are not allowed here, here you go with the code:
add name=”ImageDownload” type=”MindzGroup.Web.Modules.ImageDownload, MindzGroup.Web.Modules”
I will try to creat the sample app and upload it here.
Smack-dab what I was lokonig forty!
You’re the greaestt! JMHO
Waklnig in the presence of giants here. Cool thinking all around!
Wow! Great tnhiking! JK
That addresses several of my concerns autcally.
This has made my day. I wish all positgns were this good.
At last, someone comes up with the “right” asenwr!
Heya just wanted to give you a quick heads up and let you know a few of the images aren’t loading properly. I’m not sure why but I think its a linking issue. I’ve tried it in two different web browsers and both show the same outcome.
I am not able locate any missing image. Can you please let me know which post you are talking about … Thanks!
Frnalky I think that’s absolutely good stuff.
Thank you so much for this arcitle, it saved me time!
There is a critical shortage of inofrmative articles like this.
Cool! That’s a ceevlr way of looking at it!
This is a smart blog. I mean it. You have so much knowledge about this issue, and so much passion. You also know how to make people rally behind it, obviously from the responses. Youve got a design here thats not too flashy, but makes a statement as big as what youre saying. Great job, indeed.
I would like to thank you for the efforts you have made writing this article. You have been enlightening for me. I’ve passed this on to a friend of mine.
Heck of a job there, it asbluoetly helps me out.
You keep it up now, undesrantd? Really good to know.
This is exactly what I was looking for. Thanks for wiritng!
With the bases laoded you struck us out with that answer!
Error 3 Could not load file or assembly ‘MindzGroup.Web.Modules’ or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.
I have got this error.
Can anyone help me?
this module has been written in version 4.0 of .net