Reputation: 81
I am using cordova file transfer plugin to download files from my app.
But, when I m using progress event to show the user to progress bar on downloading It is not working properly every time it shows 0%.
Here is code which I used to show progress event....
$cordovaFileTransfer.download(url, targetPath, downloadOptions,
trustHosts).then(function(result) {
}, function(err) {
}, function(progress) {
if (progress.lengthComputable) {
$rootScope.downloadProgress = (progress.loaded / progress.total) * 100;
} else {
$rootScope.downloadProgress = (progress.loaded / file_size) * 100;
}
});
Can anyone please help me out to solve this downloading progress bar issue in ios.
Upvotes: 3
Views: 1420
Reputation: 111
function (progress) {
$timeout(function () {
$scope.downloadProgress = (progress.loaded / progress.total) * 100;
console.log($scope.downloadProgress)
});
}
Replace your progress function with this function, u can check your result in console
Upvotes: 0
Reputation: 41
I had the same problem six months ago, it seems to be a bug in the Filetransfer plugin.
The solution I found was to do the changes mentioned here: https://issues.apache.org/jira/browse/CB-9936
In CDVFileTransfer.m, download() method between line 447 to 462
delegate.connection = [[NSURLConnection alloc] initWithRequest:req delegate:delegate startImmediately:NO]; if (self.queue == nil) { self.queue = [[NSOperationQueue alloc] init]; } [delegate.connection setDelegateQueue:self.queue]; @synchronized (activeTransfers) { activeTransfers[delegate.objectId] = delegate; } // Downloads can take time // sending this to a new thread calling the download_async method dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, (unsigned long)NULL), ^(void) { [delegate.connection start];} );
If I replaced it with the older version of the code, then it works.
delegate.connection = [NSURLConnection connectionWithRequest:req delegate:delegate]; if (activeTransfers == nil) { activeTransfers = [[NSMutableDictionary alloc] init]; } [activeTransfers setObject:delegate forKey:delegate.objectId];
Upvotes: 3