我已经创建了一个新文件夹" 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 );
}
}];
}
答案 0 :(得分:1)
您需要了解Google云端硬盘文件(和文件夹 - 无论如何只是文件)都是由唯一ID标识的,而不是由其名称标识。因此,如果您告知云端硬盘创建与之前文件夹同名的第二个文件夹,则云端硬盘会假设您知道自己在做什么并遵守。您需要做的是第一次捕获文件夹的ID,然后使用该ID作为后续插入的父项。