What is the equivalent of wget in javascript to do

2020-06-28 01:00发布

问题:

"wget http://www.example.com/file.doc" downloads that file to the local disk.

What is the equivalent of the above in javascript? for example, consider the following html snippet.

<html>
<head>
   <script language="JavaScript">
      function download_file() {
         var url = "http://www.example.com/file.doc"
         //
         // Question: 
         //
         // what should be done here to download 
         // the file in the url?
         //
      }
   </script>
</head>
<body>
   <input type="button" value="Download" onclick="download_file()">
</body>
</html>

Please suggest a solution that is compliant with all the browsers.

Sangeeth.

回答1:

After a exploring more than a month, with a help of my friend, we were able to find out the following.

The website where the file is hosted is not allowing us to download the file using window.location = url; or window.open(url);

Finally we had to use the data-downloadurl support from HTML5 as follows

<a href="<url-goes-here>" data-downloadurl="audio/mpeg:<filename-goes-here>:<url-goes-here>" download="<filename-goes-here>">Click here to download the file</a>

We embed this html into the host html and when clicked on the link, it triggers the download.



回答2:

Why not use:

 function download_file() {
   var url = "http://www.example.com/file.doc"
   window.location = url;
 }

See https://developer.mozilla.org/en/DOM/window.location

If you need to open this in a new window/tab first then use:

 function download_file() {
   var url = "http://www.example.com/file.doc"
   window.open(url);
 }

See https://developer.mozilla.org/en/DOM/window.open



回答3:

First thing that always comes in mind of every answerer to this question is executing wget shell command from java script.I'm almost certain that that's not possible because of major security risk.

You pretty much need to have ajax which sends command to command line either through php, or another scripting language via ajax...

You could probably make that happen with something like http://www.phantomjs.org/
I am saying probably because I read it from somewhere.