2012-11-18 10 views
7

Ho integrato il disco rigido di Google con la mia app iOS. Ma non so come caricare un file nella cartella specifica di Google Drive.IOS: Come caricare un file in una cartella specifica di Google utilizzando la libreria sdk di Google Drive

Qui viene utilizzato il codice per caricare il file. Ma questo carica il file nella mia cartella principale di Google. Qualcuno condivide un codice per caricare un file nella cartella specifica del drive google ?.

My Code:

-(void)uploadFileToGoogleDrive:(NSString*)fileName 
{  
GTLDriveFile *driveFile = [[[GTLDriveFile alloc]init] autorelease]; 

driveFile.mimeType = @"application/pdf"; 
driveFile.originalFilename = @"test.doc"; 
driveFile.title = @"test.doc"; 

NSString *filePath = [LocalFilesDetails getUserDocumentFullPathForFileName:fileName isSignedDocument:YES]; 

GTLUploadParameters *uploadParameters = [GTLUploadParameters 
             uploadParametersWithData:[NSData dataWithContentsOfFile:filePath] 
             MIMEType:@"application/pdf"];  

GTLQueryDrive *query = [GTLQueryDrive queryForFilesInsertWithObject:driveFile 
            uploadParameters:uploadParameters]; 

[self.driveService executeQuery:query 
    completionHandler:^(GTLServiceTicket *ticket, 
         GTLDriveFile *updatedFile, 
         NSError *error) { 
    if (error == nil) { 
     NSLog(@"\n\nfile uploaded into google drive\\<my_folder> foler"); 
    } else { 
     NSLog(@"\n\nfile uplod failed google drive\\<my_folder> foler");    
    } 
}]; 
} 
+0

NSString * filePath = [LocalFilesDetails getUserDocumentFullPathForFileName: fileName isSignedDocument: YES]; come aggiungere localfilesdetails –

+0

@GamiNilesh ha dimenticato che LocalFilesDetails, basta passare il percorso di archiviazione dei dati del file nella variabile filePath. Questo va bene – loganathan

risposta

10

È necessario impostare la proprietà parents del tuo riferimento driveFile.

GTLDriveParentReference *parentRef = [GTLDriveParentReference object]; 
parentRef.identifier = folderIdentifier; // identifier property of the folder 
driveFile.parents = @[ parentRef ]; 
+0

Questo è quello che voglio :-) ha funzionato benissimo :-) grazie uomo – loganathan

+0

può qualche amico sapere come aggiungere una nuova cartella ??? – Yashesh

+0

Come faccio a sapere folderIdentifier? –

3

Non so iOS, quindi potrebbe essere fuori base, ma che questo codice da https://developers.google.com/drive/v2/reference/files/insert aiuto

+ (void)insertFileWithService:(GTLServiceDrive *)service 
         title:(NSString *)title 
        description:(NSString *)description 
        parentId:(NSString *)parentId 
        mimeType:(NSString *)mimeType 
         data:(NSData *)data 
       completionBlock:(void (^)(GTLDriveFile *, NSError *))completionBlock { 
    GTLDriveFile *file = [GTLDriveFile object]; 

    file.title = title; 
    file.descriptionProperty = description; 
    file.mimeType = mimeType; 

    GTLUploadParameters *uploadParameters = 
    [GTLUploadParameters uploadParametersWithData:data MIMEType:mimeType]; 
    GTLQueryDrive *query = 
    [GTLQueryDrive queryForFilesInsertWithObject:file 
           uploadParameters:uploadParameters]; 
+0

Ho anche guardato questo codice ma non hanno usato quel parametro "parentId" in quel codice. Qualche altra idea? – loganathan

+1

Dove trovo 'parentId' della cartella che mi serve? –

1

GTLServiceTicket * _editFileListTicket;

GTLServiceDrive *service = self.driveService; 

    GTLDriveFile *folderObj = [GTLDriveFile object]; 

    folderObj.title = [NSString stringWithFormat:@"%@", title]; 

    folderObj.mimeType = @"application/vnd.google-apps.folder"; 

    GTLQueryDrive *query = [GTLQueryDrive queryForFilesInsertWithObject:folderObj 
                 uploadParameters:nil]; 
    _editFileListTicket = [service executeQuery:query 
           completionHandler:^(GTLServiceTicket *ticket, 
                GTLDriveFile *folderItem, 
                NSError *error) { 

           if (error == nil) 
           { 

            UIAlertView *alert=[[UIAlertView alloc] initWithTitle:nil message:@"Created" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; 
            [alert show]; 


            } 
           else 
           { 

            NSLog(@"error"); 

            } 
           }]; 
+0

non hai trovato questo '[NSString stringWithFormat: @"% @ ", titolo];' divertente? Perché non solo "titolo"? –

Problemi correlati