Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create folder with Google Drive SDK iOS

Tags:

ios

I'm trying to create a folder using the Google Drive SDK for iOS. From the Google Drive documentation here:

https://developers.google.com/drive/folder

It says that creating a folder is just like creating a 'file' with a special MIME type.

GTLUploadParameters *uploadParameters = nil;

self.driveFile = [GTLDriveFile object];
self.driveFile.title = foldername;

uploadParameters = [GTLUploadParameters new];
uploadParameters.MIMEType = @"application/vnd.google-apps.folder";

GTLQueryDrive *query = nil;
query = [GTLQueryDrive queryForFilesInsertWithObject:self.driveFile
                                    uploadParameters:uploadParameters];


[self.driveService executeQuery:query completionHandler:^(GTLServiceTicket *ticket,
                                                          GTLDriveFile *updatedFile,
                                                          NSError *error) {

But when I perform the query, I get:

'NSInternalInconsistencyException', reason: 'upload data and fileHandle are mutually exclusive'

This suggests I should be using one of the predefined GTLUploadParameters factory methods:

+ (GTLUploadParameters *)uploadParametersWithData:(NSData *)data
                                         MIMEType:(NSString *)mimeType;

+ (GTLUploadParameters *)uploadParametersWithFileHandle:(NSFileHandle *)fileHandle
                                               MIMEType:(NSString *)mimeType;

But neither of these are appropriate (or work, as I've tried). Has anyone successfully created folders using Google Drive on iOS?

like image 740
jimt Avatar asked Jul 29 '26 03:07

jimt


1 Answers

I do this:

    GTLDriveFile *folderObj = [GTLDriveFile object];
    folderObj.title = folderName;
    folderObj.mimeType = @"application/vnd.google-apps.folder";

    // To create a folder in a specific parent folder, specify the identifier
    // of the parent:
    // _resourceId is the identifier from the parent folder
    if (_resourceId.length && ![_resourceId isEqualToString:@"0"]) {
        GTLDriveParentReference *parentRef = [GTLDriveParentReference object];
        parentRef.identifier = _resourceId;
        folderObj.parents = [NSArray arrayWithObject:parentRef];
    }

    GTLQueryDrive *query = [GTLQueryDrive queryForFilesInsertWithObject:folderObj uploadParameters:nil];

    // executeQuery:...
like image 65
rmaddy Avatar answered Aug 05 '26 17:08

rmaddy



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!