I have interesting task which requires me to download a dynamically generated file from a server (ASP.NET) to the client. On the client side it is just JavaScript (jQuery) and the client is able to generate a lot of parameters to customize how the data is exported.
What is the best way to do download the file from the server? Should I use a WCF service such as what is described here or simple page like this one?
I don’t know how to download a file without reloading the page (I’m not sure that $.ajax will work in this case). Could someone please give me some direction on this topic? Thanks.
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
First you can create the file from a handler .ashx
Let say that you have the file for downloading at download.ashx and you have some parametres to pass from your javascript, eg download.ashx?p1=8827&p2=8831 to know what you going to create.
Then on your javascript you simple can make a redirect as
window.location = "download.ashx?p1=8827&p2=8831";
or alternative you can use the window.open for do the same think
window.open("download.ashx?p1=8827&p2=8831");
and your file will start the download.
Just make sure that you have set the header of attachment, and the correct contenttype on your handle eg:
HttpContext.Current.Response.ContentType = "application/octet-stream";
HttpContext.Current.Response.AddHeader("Content-Disposition",
"attachment; filename=" + SaveAsThisFileName);
Simple and clear, both tested and working.
Also you may interesting on this answer: How to handle errors.
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0