2017-03-05 3 views
1

Ich versuche eine App mit Phonegap Build zu erstellen, während ich mehrere Plugins verwende, um eine Online-Datei auf die SD-Karte des Geräts herunterzuladen. Die Nutzung der folgenden Links:Unvollständiger Dateidownload von FileTransfer in 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

Ich war in der Lage zu bekommen diesen Code an die Arbeit:

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); 
}); 

}

JEDOCH das Problem Das ist zwar ein erfolgreicher CallBack, aber die Datei wird nur teilweise heruntergeladen. Eg.ics-android.png: Das hat eine Dateigröße von 14.7kB, aber das Ergebnis hat eine Größe von 0B. Ein weiteres Beispiel einer 125kB-Datei führt zum Download von 104,55kB. Mein config.xml hat folgende Berechtigungen:

<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="*" /> 

Ich habe eine Antwort versucht gesucht, aber bisher scheint es nicht, dass viele andere diese Fehler aufgetreten sind. Wo bin ich falsch gelaufen?/Was habe ich falsch gemacht?

Antwort

0

Managed dies für mich zur Arbeit kommen:

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==" 
      //} 
     } 
    ); 

    }; 
Verwandte Themen