Reputation: 12293
I am not very skilled in ASP.NET and I have tried to:
I have this JS function:
function downloadURL(url) {
var hiddenIFrameID = 'hiddenDownloader',
iframe = document.getElementById(hiddenIFrameID);
if (iframe === null) {
iframe = document.createElement('iframe');
iframe.id = hiddenIFrameID;
iframe.style.display = 'none';
document.body.appendChild(iframe);
}
iframe.src = url;
};
and this Button server control:
<asp:Button runat="server" ID="Button1" Content="DOWNLOAD" OnClick="Button1_Click" />
in the EventHandler I simply call:
// UPDATE UI
textBoxXY.Text = "Text after file download";
ClientScript.RegisterStartupScript(typeof(MyPage), "myDownloadKey", "downloadURL(" + ResolveUrl("~/MyDownloadHandler.ashx") + ");", true);
What do you think of this approach. It seems to work but...
Upvotes: 2
Views: 3457
Reputation: 66649
All they have to do with the MyDownloadHandler.ashx
headers. If you add there this headers on your handler ashx
HttpContext.Current.Response.ContentType = "application/octet-stream";
HttpContext.Current.Response.AddHeader("Content-Disposition",
"attachment; filename=" + SaveAsThisFileName);
then the browser will open the file save browser and not a new tab.
And you only have to do with javascript is
window.location = "MyDownloadHandler.ashx";
or just a simple link.
So to summarize, you have create a lot of code that is not necessary, and you make and a post back, that is also not necessary.
Relative:
What is the best way to download file from server
Error handling when downloading file from ASP.NET Web Handler (.ashx)
Upvotes: 1