2012-11-18 16 views
7

Zintegrowaliśmy dysk SDK Google z moją aplikacją na iOS. Ale nie wiem, jak przesłać plik do konkretnego folderu Google.IOS: Jak przesłać plik do określonego folderu na dysku Google przy użyciu biblioteki dysków Google ddk

Tutaj kod używam do przesłania pliku. Ale ten przesyła plik do mojego katalogu głównego na dysku google. Ktoś podziela kod, aby przesłać plik do google drive określonego folderu ?.

mój kod:

-(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: nazwa isSignedDocument TAK]; jak dodać localfilesdetails –

+0

@GamiNilesh zapomniałem, że LocalFilesDetails, po prostu przekazać swoją ścieżkę przechowywanych danych pliku w zmiennej filePath. To jest w porządku – loganathan

Odpowiedz

10

Musisz ustawić właściwość parents twojego odniesienia driveFile.

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

To jest to, co chcę :-) działało świetnie :-) dzięki człowiekowi – loganathan

+0

Czy ktokolwiek może wiedzieć, jak dodać nowy folder ??? – Yashesh

+0

Skąd mam wiedzieć folderIdentifier? –

3

Nie wiem, iOS, więc może być poza bazą, ale robi to kod z https://developers.google.com/drive/v2/reference/files/insert pomoc

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

Sprawdziłem również ten kod, ale nie użyli tego "parentId" w tym kodzie. Każdy inny pomysł? – loganathan

+1

Skąd mogę pobrać 'parentId' z folderu, którego potrzebuję? –

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

nie znalazłeś tego '[NSString stringWithFormat: @"% @ ", title];' funny? Dlaczego nie po prostu "tytuł"? –

Powiązane problemy