Google drive - 如何在同一文件夹内创建文件

Google drive - how to create a file inside the same folder

我创建了一个新文件夹 "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 );
    }
}];

}

您需要了解 Google 驱动器文件(和文件夹 - 无论如何都只是文件)由唯一 ID 标识,而不是它们的名称。因此,如果您告诉 Drive 创建与前一个文件夹同名的第二个文件夹,Drive 会假定您知道自己在做什么并服从。您需要做的是第一次捕获文件夹的 ID,然后使用该 ID 作为后续插入的父级。