As of this post, all major desktop browsers excluding Microsoft IE support the download attribute. It is likely that people who use these browsers would likely rather view the document rather than saving it to their phone. New to HTML 5. This markup is easier to understand and is supported by all modern browsers, but may not be supported by all content management systems. If for whatever reason, you cannot add the download attribute in the case that you cannot directly edit the HTML of your web page , you can optionally compress the file using zip, and instruct the user to download the zip file.
You can alternatively explain to the user that they should right click on the link and select download. If you have no other alternatives to force the file to download, you can host it on a file hosting service such as Google Docs.
Js and FileUploader. Js and add the following code. JS and define the controller in that file as in the following. Now our objective is, after selecting the file, it will automatically read the file and show the file size in the page.
For this purpose, we called the onchange event of the file upload control and written the following code. Now our next objective is to upload the file using the Web API so that this specific file can be copied and saved in a specific location. For this, we already created a button name Upload. We need to click on this button for uploading. When we click this button, it will call an AngularJs function that internally redirects to the Web API controller to copy and save the file into a specific location.
Here I am using Temporary Internet Files folder for the location. Now write the following code first into the fileupload. And the uploadComplete function checks if the Web API returns a status code in other words success or not.
Now for the Web API code. For that, we will add a controller file within the controller folder named FileUploaderController and write the following code in that file. Generic; using System.
IO; using System. Linq; using System. Net; using System. Http; using System. Headers; using System. Web; using System. Http; namespace FileUploader. Request; if httpRequest. GetFullPath Path. Combine Environment. This is a huge limitation if we are looking to develop a generic solution — Akshat Gupta.
The question is explicitly asking to use a button instead of a link — Quentin. Show 9 more comments. Gray k 22 22 gold badges silver badges bronze badges. Cfreak Cfreak In when the answer was originally posted it wasn't supported in any major browser.
This doesn't necessarily trigger a download. It simply causes the browser to navigate to file. Whether that results in file. Show 3 more comments. Ani Menon What if i wanna download a xml file? Thanks for your code. I have tested, it can working in IE, Chrome, Firefox. If you have a file acceptable by the browser like a PDF it will open in new tab instead to show download dialog.
You could use window. Show 1 more comment. Stefanos Chrs Stefanos Chrs 1, 2 2 gold badges 14 14 silver badges 44 44 bronze badges. NicholasKyriakides Kind of reminds me of this gem: image. BryanLarsen You are right, Firefox doesn't allow this without adding the element to body first.
Thank you, updating the answer — Stefanos Chrs. Is there a way that javascript function be triggered once the download finishes? Just trying to show a message once downloads start and remove the message once download completes. This is best solution out here and should be accepted answer. Show 6 more comments. Mark Amery k 65 65 gold badges silver badges bronze badges. Matt Ball Matt Ball k 95 95 gold badges silver badges bronze badges.
Perfect, thanks. Do you happen to know if most servers will set the Content-Disposition to 'attachment' by default? There is no "most. Don't rely on it being set. This issue has been driving me ballistic, and this was the only option that worked and is supported by IE.
No jquery. This doest work if you're trying to download an image, it would open the image in the browser — Dheeraj. Danubian Sailor Danubian Sailor It does, at least if you actually apprnf the iframe to document.
This doesn't seem to be working in Chrome right now, although it used to work. I wonder if it kind of intermittently stops working in different versions of Chrome. Works in Chrome as of Version Does not work with images in Firefox v It just renders the image in the iframe. This will fail silently if the file is of a type the browser knows how to render itself, though unless the server returns a Content-Disposition header indicating the file should be downloaded.
The question is explicitly asking how to do this with a button instead of a link. Delconis Delconis 2 2 silver badges 9 9 bronze badges. This at least the first implementation doesn't necessarily trigger a download. You can hide the download link and make the button click it. Starwarswii Starwarswii 1, 1 1 gold badge 14 14 silver badges 14 14 bronze badges. For this to work in Firefox, the resource has to be on the same domain as the document.
Setting CORS headers does not help. Don't ever do this — Wannes.
0コメント