пятница, 6 июля 2012 г.

Загрузка файлов с удаленного сервера с помощью PhoneGap

Сегодня я хочу рассказать вам как скачать с сервера нужные нам файлы. Допустим у вас есть какой то ftp сервер, на котором лежат файлы нужные вам, ну или вы пишите приложение которое позволяет скачивать и загружать файлы на сервер, в общем вам нужно скачать данные с него и вы зададитесь вопросом как такое сделать с помощью js? Я думаю большинство задастся вопросом зачем вообще такое делать на js когда полно либ для java, я отвечу: на phonegap + js вы можете написать программу под все мобильные платформы какие есть, достаточно только написать код и перекомпилить его под остальные платформы, не важно под какой вы его отлаживали… В общем я об этом писал в статье по настройки phonegap и eclipse, там все хорошо описано, прошу жаловать (:.


В Cordova API в разделе FileTransfer в подразделе download, хорошо описано как скачивать я хочу вам всего лишь прокомментировать как это сделать, скопировав оттуда код и вставив к себе в проект у меня не получилось ничего, может руки кривые, может код не рабочий я не знаю, так что я полазил по интернету и собрал свое детище.


Для того что бы скачать файл вам нужно указать путь откуда качать и куда, примерно так:
var localPath = fileEntry.fullPath;
if (device.platform === "Android" &&
  localPath.indexOf("file://") === 0) {
    localPath = localPath.substring(7);
}


Полный код который скачивает файл с сервера:
<!DOCTYPE html>
<html>
  <head>
  <title></title>
<script type="text/javascript" charset="utf-8" src="js/cordova-1.6.1.js"></script>
    <script type="text/javascript">
        function DownloadFile(){
           var fileTransfer = new FileTransfer();
           var url ="http://full path/com.txt";//путь к файлу который хотим скачать
           var folderpath = persistent_root.fullPath + ""; путь куда скачать, директория (если оставить "" то скачается в корень телефона)
           var onSuccess = function(entry){
           console.log("download complete: " + entry.fullPath);
        };
        
        var onError=function(error) {
            console.log("download error source " + error.source);
            console.log("download error target " + error.target);
            console.log("upload error code " + error.code);
        };
        
                fileTransfer.download(url,folderpath,onSuccess,onError); //скачиваем
        } 
 
    </script>
  </head>
  <body>
<h1>File Download</h1>
  </body>
</html>


Надеюсь из комментариев понятно что где делается. Ничего вроде бы сложного нет, код простой и понятный. Если хотите сделать более красивую загрузку файла с сервера можно создать кнопку и приделать к ней событие скачивания, но это мелочи. Спасибо за внимание.  

6 комментариев:

  1. Куда вставлять путь к файлу?

    ОтветитьУдалить
    Ответы
    1. var url ="http://полныый путь к файлу.ехе";//путь к файлу который хотим скачать

      Удалить
    2. "Полный путь к файлу" и "путь к файлу, который хотим скачать" это одно и тоже?
      И почему файл должен быть .exe?

      Удалить
    3. там же все прокомментировано.
      var url ="Путь откуда качать;//путь к файлу который хотим скачать
      var folderpath = "Путь к папке куда скачать"; путь куда скачать, директория (если оставить "" то скачается в корень телефона)
      Файл не должен быть экзе, то я для примера написал

      Удалить
    4. Когда я запускаю приложение, у меня там только строчка File Download, загрузки файла не происходит. Как сделать, чтобы файл загружался?

      Удалить
    5. забыл дописать вот такое
      document.addEventListener("deviceready", onDeviceReady, false);

      //та же проверка
      function onDeviceReady() {
      window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, DownloadFile, function() {});
      }

      Удалить