I'm making an app that needs to download images from my site and store them in the phone, but when I try phonegap shows me all the errors that could happen. What can I do to correct this =/ ?
var fileTransfer = new FileTransfer();
fileTransfer.download(
"http://developer.android.com/assets/images/home/ics-android.png",
"/",
function(entry) {
alert("download complete: " + entry.fullPath);
},
function(error) {
alert("download error source " + error.source);
alert("download error target " + error.target);
alert("upload error code" + error.code);
});
The errors shown are :
Download error source " the url used"
download error target: " the target used "
upload error code 1
I'm using cordova 2.2.0
Here is the logcat error log:
12-06 09:07:26.413: E/FileTransfer(2186): {"target":"\/","source":"http:\/\/developer.android.com\/assets\/images\/home\/ics-android.png","code":1}
12-06 09:07:26.413: E/FileTransfer(2186): java.io.FileNotFoundException
12-06 09:07:26.413: E/FileTransfer(2186): at org.apache.cordova.FileTransfer.getFileFromPath(FileTransfer.java:794)
12-06 09:07:26.413: E/FileTransfer(2186): at org.apache.cordova.FileTransfer.access$700(FileTransfer.java:62)
12-06 09:07:26.413: E/FileTransfer(2186): at org.apache.cordova.FileTransfer$4.run(FileTransfer.java:631)
12-06 09:07:26.413: E/FileTransfer(2186): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
12-06 09:07:26.413: E/FileTransfer(2186): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
12-06 09:07:26.413: E/FileTransfer(2186): at java.lang.Thread.run(Thread.java:856)
You are so close, it's just your target file that is wrong. Try:
var fileTransfer = new FileTransfer();
fileTransfer.download(
"http://developer.android.com/assets/images/home/ics-android.png",
"file://sdcard/ics-android.png",
function(entry) {
alert("download complete: " + entry.fullPath);
},
function(error) {
alert("download error source " + error.source);
alert("download error target " + error.target);
alert("upload error code" + error.code);
});
You need the "file://" prefix and you can't save to "/" as you don't have permissions.
I have tried it and this work in Android but I have not check yet in ios.And the download is successfull as I am using it in my project.
enter code here
function fun(){
var dfd = $.Deferred(function (dfd){
var remoteFile = "Your link";
var localFileName = remoteFile.substring(remoteFile.lastIndexOf('/')+1);
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) {
fileSystem.root.getFile(localFileName, {create: true, exclusive: false},
function(fileEntry) {
var localPath = fileEntry.fullPath;
if (device.platform === "Android" && localPath.indexOf("file://") === 0) {
localPath = localPath.substring(7);
}// You need to write IOS instead of Android
var ft = new FileTransfer();
ft.download(remoteFile, localPath, function(entry) {
dfd.resolve('file downloaded');
// Do what you want with successful file downloaded and then
// call the method again to get the next file
//downloadFile();
}, fail);
}, fail);
}, fail);
});
return dfd.promise();
}
fun().then(function(msg){
if(msg==="file downloaded")
{
alert("Download complete");
}
else
{
alert("Download error")
}
});
function fail(){
alert("error");
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With