2017-03-05 1 views
1

Je tente de créer une application en utilisant Phonegap Build en utilisant plusieurs plugins afin de télécharger un fichier en ligne sur la carte SD de l'appareil. Faisant usage des liens suivants:Téléchargement de fichier incomplet à partir de FileTransfer dans Cordova

i) https://www.tutorialspoint.com/cordova/cordova_file_transfer.htm ii) https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-file-transfer/index.html#download

J'ai pu obtenir obtenir ce code pour:

function downloadFile() { 


var fileTransfer = new FileTransfer(); 
    fileTransfer.download(
"http://developer.android.com/assets/images/home/ics-android.png", 
"file:///storage/sdcard0/aw2uin.png", 
function(entry) { 
    alert("download complete: 1" + entry.toURL); 
}, 
function(error) { 
    alert("download error source " + error.source); 
    alert("download error target " + error.target); 
    alert("upload error code" + error.code); 
}); 

}

CEPENDANT le problème est que, bien qu'ayant un succès Callback, le fichier est seulement partiellement téléchargé. Eg.ics-android.png: ceci a une taille de fichier de 14.7kB, pourtant le résultat a une taille de 0B. Un autre exemple de fichier de 125 Ko entraîne le téléchargement d'un fichier de 104,55 Ko. Mon config.xml a les autorisations suivantes:

<plugin name="cordova-plugin-file" spec="~4.3.1" /> 
<plugin name="cordova-plugin-file-transfer" spec="~1.6.1" /> 
<plugin name="cordova-plugin-network-information" spec="~1.3.1" /> 
<plugin name="cordova-plugin-whitelist" version="1.3.1" /> 
<access origin="*" /><!--subdomains="true" /> --> 
<preference name="AndroidExtraFilesystems" value="files,files-external,documents,sdcard,cache,cache-external,assets,root" /> 
<preference name="android-minSdkVersion" value="7" /> 
<preference name="android-installLocation" value="preferExternal" /> 
<allow-intent href="http://*/*" /> 
<allow-intent href="https://*/*" /> 
<allow-navigation href="*" /> 

J'ai essayé la recherche d'une réponse, mais jusqu'à présent, il ne semble pas que d'autres beaucoup ont rencontré cette erreur. Où ai-je mal tourné?/Qu'ai-je mal fait?

Répondre

0

a réussi à obtenir ce travail pour moi:

function downloadFile() { 


window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fs) { 

alert('file system open: ' + fs.name); 


var url = 'https://....'; 
// Parameters passed to getFile create a new file or return the file if it already exists. 
fs.root.getFile('downloaded-image.png', { create: true, exclusive: false }, function (fileEntry) { 
    download(fileEntry, url, true); 

}, alert("fail1")); 
}, alert("fail2")); 

} 

function download(fileEntry, url, readBinaryData) { 

    var fileTransfer = new FileTransfer(); 
    var fileURL = cordova.file.externalRootDirectory + "filename.png"; 

    fileTransfer.download(
     url, 
     fileURL, 
     function (entry) { 
      alert("Successful download..."); 
      alert("download complete: " + entry.toURL()); 

      if (readBinaryData) { 
       // Read the file... 
       readBinaryFile(entry); 
      } 
      else { 
       // Or just display it. 
       displayImageByFileURL(entry); 
      } 
     }, 
     function (error) { 
      alert("download error source " + error.source); 
      alert("download error target " + error.target); 
      alert("upload error code" + error.code); 
     }, 
     null, // or, pass false 
     { 
      //headers: { 
      // "Authorization": "Basic dGVzdHVzZXJuYW1lOnRlc3RwYXNzd29yZA==" 
      //} 
     } 
    ); 

    };