[
https://issues.apache.org/jira/browse/CB-6881?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ian Clelland resolved CB-6881.
------------------------------
Resolution: Fixed
Closing this; tests have been updated in file-transfer, and both file:/// and
cdvfile:///URLs are working correctly, as far as I can tell.
> FileTransfer passes file:/// URLs to File when cdvfile:// is expected
> ---------------------------------------------------------------------
>
> Key: CB-6881
> URL: https://issues.apache.org/jira/browse/CB-6881
> Project: Apache Cordova
> Issue Type: Bug
> Components: Plugin File, Plugin File Transfer
> Reporter: Ian Clelland
> Assignee: Ian Clelland
>
> From CB-6394 Comment:
> Hi Ian,
> I have just been debugging an issue I was having with the FileTransfer code
> which was causing me a problem in Cordova 3.5.0.
> In previous versions, I was using code along the following lines, where I
> would be using entry.toURL():
> {code}
> var fileTransfer = new FileTransfer();
> fileTransfer.download(
> 'http://myurl.com/file.pdf',
> entry.toURL(),
> function ()
> { /* file downloaded */ }
> ,
> function (err)
> { /* console.log(error) */ }
> );
> {code}
> But in 3.5.0 this did not seem to work - when I looked at the File plugin (on
> iOS), particularly CDVFile, there's the following method which was the reason
> why:
> {code}
> - (NSString *)filesystemNameForLocalURI:(NSURL *)uri
> {
> if ([[uri scheme] isEqualToString:kCDVFilesystemURLPrefix] && [[uri host]
> isEqualToString:@"localhost"]) {
> NSArray *pathComponents = [uri pathComponents];
> if (pathComponents != nil && pathComponents.count > 1)
> { return [pathComponents objectAtIndex:1]; }
> } else if ([[uri scheme] isEqualToString:kCDVAssetsLibraryScheme])
> { return @"assets-library"; }
> return nil;
> }
> {code}
> Which is called within FileTransfer, when downloading a file, and uses the
> {{target}} parameter to resolve to the File System to store your download.
> That's fine, but in the documentation here:
> https://github.com/apache/cordova-plugin-file/blob/master/doc/index.md, it
> recommends using toURL() - however, when I use this on a File or Directory
> Entry, I receive a path string beginning with 'file:///'.
> So when Cordova attempts to resolve this location, using
> {{filesystemNameForLocalURI}} to store the downloaded file, it's never going
> to be able to create the target location, since the scheme never matches
> those two checks ('cdvfile' or 'assets library').
> In order to get around the issue, I had to use toInternalURL() instead, which
> return my entry path as a cdvfile.
> Thus, I wondered whether the documentation is wrong?
> Either way, I'm a little confused! I hope my query makes sense.
> Many thanks,
> Kelvin
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]