2015-08-07 3 views
0

Я пытаюсь загрузить удаленный файл на свое устройство. Я использую PhoneGap Build. Вот мой код.PhoneGap File Download Issue

Я пробовал каждый кусок кода, который я нашел. Когда я нажимаю кнопку загрузки, ничего не происходит. При отладке ошибок не возникает.

Где я могу с этим связаться?

<script type="text/javascript"> 
    window.appRootDirName = "my_app"; 
    function onLoad(){ 
    document.addEventListener("deviceready", onDeviceReady, false); 
    } 
    function onDeviceReady() { 
    console.log("device is ready"); 
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail); 
    } 

    function gotFS(fileSystem) { 
    console.log("filesystem got"); 
    window.fileSystem = fileSystem; 
    fileSystem.root.getDirectory(window.appRootDirName, { 
     create : true, 
     exclusive : false 
    }, dirReady, fail); 
    } 

    function dirReady(entry) { 
    window.appRootDir = entry; 
    console.log('application dir is ready'); 
    } 

    function fail() { 
    console.log('failed to get filesystem'); 
    } 

    function downloadFile(url,fileName) { 
    var fileTransfer = new FileTransfer(); 
    var filePath = window.appRootDir.fullPath + "/" + fileName + ".txt"; 
    fileTransfer.download(url, filePath, function(entry) { 
     alert("download complete: " + entry.fullPath); 
    }, function(error) { 
     console.log(error); 
    }); 
    } 

$(document).ready(function(){ 
    .... some other code 

    //on click download file 
    $(document).on('click touchstart', '.download', function(e){ 
    e && e.preventDefault(); 

    var url = $(this).data('url'); 
    var title = $(this).data('title'); 

    downloadFile(url,title); 

    }); 


}); 
</script> 

config.xml Также

<gap:plugin name="com.coconutcenter.file-transfer" version="0.4.6" /> 

    <feature name="http://api.phonegap.com/1.0/file" /> 
    <feature name="File"> 
      <param name="android-package" value="org.apache.cordova.file.FileUtils" /> 
    </feature> 
    <feature name="FileTransfer"> 
      <param name="android-package" value="org.apache.cordova.filetransfer.FileTransfer" /> 
    </feature> 
    <feature name="Storage"> 
      <param value="org.apache.cordova.Storage" name="android-package"/> 
</feature> 

Код ошибки по методу .download:

{"code":1,"source":"http://myurl.com/file.txt","target":"//my_app/file.txt","http_status":null,"body":null} 

Наконец я нашел решение. Как указано here, я использовал .toUrl() insetad fullPath. Таким образом, моя функция downloadFile будет;

function downloadFile(url,fileName) { 
    var fileTransfer = new FileTransfer(); 
    var filePath = window.appRootDir.toUrl() + "/" + fileName + ".txt"; //here 
    fileTransfer.download(url, filePath, function(entry) { 
     alert("download complete: " + entry.fullPath); 
    }, function(error) { 
     console.log(error); 
    }); 
    } 
+1

Показать выход функции ошибки –

+0

«При отладке ошибок не появляется». – bencagri

+0

В вашей функции downloadFile вывести функцию функции callbak, как this console.log («ошибка» + ошибка). –

ответ

0

Наконец-то я нашел решение. Как уже упоминалось, here, я использовал .toUrl() вместо fullPath