Google云端硬盘 - 如何在同一文件夹中创建文件

时间:2015-07-28 04:46:44

标签: objective-c google-drive-api

我已经创建了一个新文件夹" Folder_Name"并将生成的csv文件放在该文件夹中。当我单击上传csv按钮时,将调用此方法。它创建文件夹,然后在文件夹中创建文件。

当我再次单击该按钮时,它再次创建一个新文件夹并在其中创建新文件。如何调用此方法时,如何创建和使用一个唯一文件夹并将文件放在文件夹中。

代码:

- (void)uploadGeneratedCSVFile
{
    [ self generateCSV ];  
    NSString* filePath = [ [self applicationDocumentsDirectory ] stringByAppendingPathComponent:fileName ];
    NSString* mimeType = @"text/csv";

    GTLDriveFile* folder = [ GTLDriveFile object ];
    [ folder setTitle:@"Folder_Name" ];
    [ folder setMimeType:@"application/vnd.google-apps.folder" ];
    GTLUploadParameters* folderUploadParameters = [ GTLUploadParameters new ];
    GTLQueryDrive* queryFolder = [ GTLQueryDrive queryForFilesInsertWithObject:folder uploadParameters:nil ];
    [ self.driveService executeQuery:queryFolder completionHandler:^( GTLServiceTicket *ticket,
                                                                 GTLDriveFile *updatedFile,
                                                                 NSError *error) {
    if (error == nil)
    {
        NSLog( @"Created Folder" );
        GTLDriveParentReference* parent = [ GTLDriveParentReference object ];
        [ parent setIdentifier:updatedFile.identifier ];

        // Metadata
        GTLDriveFile* file = [ GTLDriveFile object ];
        [ file setTitle:[ NSString stringWithFormat:@"%@_%@",fileName, currDateStr ] ];
        [ file setParents:[ NSArray arrayWithObjects:parent, nil ] ];

        GTLUploadParameters* uploadParameters = [ GTLUploadParameters uploadParametersWithData:csv MIMEType:mimeType];
        GTLQueryDrive* query = [ GTLQueryDrive queryForFilesInsertWithObject:file uploadParameters:uploadParameters ];
        [ self.driveService executeQuery:query completionHandler:^( GTLServiceTicket *ticket,
                                                                   GTLDriveFile *updatedFile,
                                                                   NSError *error)
         {
             if (error == nil)
             {
                 NSLog(@"File %@", updatedFile.originalFilename);
             }
             else
             {
                 NSLog(@"An error occurred: %@", error);
             }

             [ self viewDidAppear:YES ];
         }];
    }
    else
    {
        NSLog( @"An error occurred: %@",error );
    }
}];

}

1 个答案:

答案 0 :(得分:1)

您需要了解Google云端硬盘文件(和文件夹 - 无论如何只是文件)都是由唯一ID标识的,而不是由其名称标识。因此,如果您告知云端硬盘创建与之前文件夹同名的第二个文件夹,则云端硬盘会假设您知道自己在做什么并遵守。您需要做的是第一次捕获文件夹的ID,然后使用该ID作为后续插入的父项。