Skip to content


Subversion checkout URL

You can clone with
Download ZIP
A consistent iOS API for cloud file storage services including Dropbox and Google Drive.
Objective-C Ruby
Branch: develop


Version Platform

Fed up with different/inconsistent/non-existent SDKs for cloud file storage services? Try GDFileManagerKit! GDFileManagerKit lets you access Dropbox, Google Drive, SugarSync and WebDAV with a consistent, NSFileManager-like API.

Features of GDFileManagerKit include:

  • Persistent cached file metadata. Old metadata is re-validated where possible making API calls more efficient.
  • Cached file downloads.
  • Chunked upload / downloads where available for reliability in intermittently connected environments.
  • Copy/Delete/Move file operations.
  • Aliases to keep track of files if the user moves / renames them remotely (requires a file service that supports persistent file identifiers like Google Drive or SugarSync).

GDFileManagerKit is currently beta-quality software, but I am using it in my app PocketBib. See my blog post for details.


File service list. To add an account, tap the 'plus' button. FileServiceList

Adding an account...


Downloading a file. (To upload a test file, tap the 'plus' button in the left navigation bar).



Get the contents of a directory:

[[GDFileManager sharedManager] getContentsOfDirectoryAtURL:url success:^(NSArray *contents) {
    for (GDURLMetadata *metadata in contents) {
        NSLog(@"Found %@ called \"%@\"", [metadata isDirectory] ? @"folder" : @"file", metadata.filename);

} failure:^(NSError *error) {
    NSLog(@"error: %@", error);

Check the local cache for the file, download it if it has been updated, and cache the result:

GDFileManager *fileManager = [GDFileManager new];
GDFileManagerDownloadOperation *downloadOperation = [fileManager cachedDownloadOperationFromSourceURL:url
                                                                   success:^(NSURL *localURL, GDURLMetadata *metadata) {
                                                                       NSLog(@"success: %@; metadata = %@", localURL, metadata);
                                                                   } failure:^(NSError *error) {
                                                                       if ([[error domain] isEqualToString:NSURLErrorDomain] && [error code] == NSURLErrorCancelled) {
                                                                       } else
                                                                           NSLog(@"download failed: %@", error);
[fileManager enqueueFileManagerOperation:downloadOperation];

To set your Dropbox API key:

[GDDropboxAPIToken registerTokenWithKey:@"<dropbox_key>"
                                   root:GDDropboxRootDropbox]; // This token has access to the entire dropbox folder

See the included GDFileManagerExample for more examples. To run the demo app, run pod install, and then open GDFileManagerExample.xcworkspace and build.


iOS 5.0+, uses a number of external libraries including AFNetworking 1.x, SSKeychain, AFOAuth2Client.


GDFileManagerKit is available through CocoaPods, to install it simply add the following line to your Podfile:

pod "GDFileManagerKit"


Graham Dennis,


GDFileManagerKit is available under the MIT license. See the LICENSE file for more info. If you require a non-attribution license, please contact me at

Something went wrong with that request. Please try again.