Что эквивалентно wget в javascript для загрузки файла с данного URL? - PullRequest
2 голосов
/ 23 ноября 2011

"wget ​​http://www.example.com/file.doc" загружает этот файл на локальный диск.

Что эквивалентно вышесказанному в javascript? например, рассмотрим следующий фрагмент HTML.

<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>

Пожалуйста, предложите решение, которое совместимо со всеми браузерами.

Sangeeth.

Ответы [ 3 ]

2 голосов
/ 23 ноября 2011

Почему бы не использовать:

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

См. https://developer.mozilla.org/en/DOM/window.location

Если вам нужно сначала открыть это в новом окне / вкладке, то используйте:

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

См. https://developer.mozilla.org/en/DOM/window.open

2 голосов
/ 27 декабря 2011

После изучения более месяца с помощью моего друга мы смогли выяснить следующее.

Веб-сайт, на котором размещен файл, не позволяет нам загрузить файл, используя window.location = url; или window.open(url);

Наконец нам пришлось использовать поддержку data-downloadurl из HTML5 следующим образом

<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>

Мы встраиваем этот html в html хоста, и при нажатии на ссылку запускается загрузка.

0 голосов
/ 23 ноября 2011

Первое, что всегда приходит на ум каждому отвечающему на этот вопрос, - это выполнение команды оболочки wget из сценария java. Я почти уверен, что это невозможно из-за серьезного риска для безопасности.

Вы в значительной степени нуждаетесьиметь ajax, который посылает команду в командную строку либо через php, либо через другой язык сценариев через ajax ...

Возможно, вы могли бы добиться этого с чем-то вроде http://www.phantomjs.org/
Я говорю, вероятно, потому что я прочиталэто откуда-то.

...