2012-11-18 19 views
7

Ich integrierte Google Drive SDK mit meiner iOS App. Aber ich weiß nicht, wie man eine Datei in einen Google-spezifischen Ordner hochlädt.IOS: Wie man eine Datei in bestimmte Google Drive-Ordner mit Google Drive sdk-Bibliothek hochladen

Hier wird der Code verwendet, um die Datei hochzuladen. Aber dieser lädt die Datei in meinen Google Drive Stammordner. Jeder teilen einen Code, um eine Datei in Google Drive spezifischen Ordner hochzuladen.

Mein 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: JA]; wie localfilesdetails hinzufügen –

+0

@GamiNilesh vergessen, dass LocalFilesDetails, übergeben Sie einfach Ihre Datei gespeicherten Datenpfad in der Variable filePath. Das ist in Ordnung – loganathan

Antwort

10

Sie die parents Eigenschaft festlegen müssen Ihrer driveFile Referenz.

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

Das ist was ich will :-) es hat super geklappt :-) danke mann – loganathan

+0

kann jeder kumpel wissen wie man neuen ordner hinzufügt ??? – Yashesh

+0

Woher weiß ich folderIdentifier? –

3

Ich weiß nicht, iOS, so Basis weg sein, aber macht diesen Code aus https://developers.google.com/drive/v2/reference/files/insert Hilfe

+ (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

Ich sah auch diesen Code, aber sie haben nicht verwendet, dass "ParentId" Param in diesem Code. Irgendeine andere Idee? – loganathan

+1

Wo bekomme ich 'parentId' von dem Ordner, den ich brauche? –

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

hast du das nicht gefunden '[NSString stringWithFormat: @"% @ ", titel];' witzig? Warum nicht nur Titel? –

Verwandte Themen