2013-01-03 2 views
1

Dropbox에있는 모든 사진의 사용자 목록을 표시하고이를 사용하여 프로젝트에서 다운로드 할 수 있어야합니다. 사용자가 자신의 사진 앨범에서 사진을 선택하는 것처럼 단순화하십시오. Dropbox SDK v1.3.3을 사용하고 있습니다.Dropbox iOS SDK를 사용하여 사진 다운로드

UPDATE :

이것은 내가 지금까지 무슨 짓입니다 :

- (void)restClient:(DBRestClient *)client loadedMetadata:(DBMetadata *)metadata { 
    if (metadata.isDirectory) { 
     // Available files extensions 
     NSArray *validExtensions = [NSArray arrayWithObjects:@"jpg", @"jpeg", @"png", nil]; 
     // Local path 
     NSArray *libraryPaths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); 
     NSString *LibraryDirectory = [libraryPaths objectAtIndex:0]; 
     LibraryDirectory = [LibraryDirectory stringByAppendingString:@"/Dropbox/"]; 
     NSString *localPath = @""; 

     if (![[NSFileManager defaultManager] fileExistsAtPath:LibraryDirectory]){ 
      NSError* error; 
      if( [[NSFileManager defaultManager] createDirectoryAtPath:LibraryDirectory withIntermediateDirectories:NO attributes:nil error:&error]) 
       ;// success 
      else { 
       NSLog(@"[%@] ERROR: attempting to write create Dropbox directory", [self class]); 
       NSAssert(FALSE, @"Failed to create directory maybe out of disk space?"); 
      } 
     } 
     // Work with dropbox files array 
     for (DBMetadata *file in metadata.contents) { 
      NSString* extension = [[file.path pathExtension] lowercaseString]; 
      if(![file isDirectory] && [validExtensions indexOfObject:extension]!=NSNotFound) { 
       localPath = [LibraryDirectory stringByAppendingPathComponent:[file filename]]; 
       // Add file to Dropbox Directory 
       BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:localPath]; 
       if(!fileExists) [[self restClient] loadFile:file.path intoPath:localPath]; 
      } 
     } 
    } 
} 

그냥 보관 용 로컬 폴더에서 사진의 목록을 표시하려면 왼쪽. 어쩌면 누군가 그걸 어떻게 알아? 나는 그것이 사진 앨범에서처럼되고 싶어 :

- (void)getDropboxPhotoList:(NSString *)path { 
    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; 
    /* source must be not from gallery, but from local folder */ 
    //imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
    imagePicker.delegate = self; 

    UIPopoverController *pop = [[UIPopoverController alloc] initWithContentViewController:imagePicker]; 
    [pop presentPopoverFromBarButtonItem:(UIBarButtonItem *)dropboxButton permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
    popover = pop; 
    [imagePicker release]; 
} 

답변

1

하면 Dropbox API 특정 폴더에있는 파일을 나열하는 몇 가지 예제 코드를 보여줍니다 : 폴더 당신이 할 수있는

List files in a folder

목록 파일을 다음 전화로 방금 업로드 한 폴더의 파일을 나열하십시오.

[[self restClient] loadMetadata:@"/"]; 

나머지 클라이언트는 다음 콜백 중 하나와 대리자를 호출합니다 :

- (void)restClient:(DBRestClient *)client loadedMetadata:(DBMetadata *)metadata { 
    if (metadata.isDirectory) { 
     NSLog(@"Folder '%@' contains:", metadata.path); 
    for (DBMetadata *file in metadata.contents) { 
     NSLog(@"\t%@", file.filename); 
    } 
    } 
} 

- (void)restClient:(DBRestClient *)client 
    loadMetadataFailedWithError:(NSError *)error { 

    NSLog(@"Error loading metadata: %@", error); 
} 

메타 데이터 오브젝트는 사용자의 보관에서 파일과 폴더에 대한 정보를 얻는 방법이다. loadMetadata : on /을 호출하면 루트 폴더의 메타 데이터가로드되고 폴더이므로 contents 속성에는 해당 폴더에 포함 된 파일 및 폴더 목록이 포함됩니다. 이 데이터를 계속 유지하면 다음 번에 파일로 무언가를하고 싶을 때 파일의 변경 여부를 식별하기 위해 현재 메타 데이터를 저장 한 것과 비교할 수 있습니다. 모든 정보 메타 데이터 오브젝트가 갖는 DBMetadata.h를 확인하십시오.

+0

Dropbox API 설명서를 읽었습니다. 하지만 앱 폴더에 저장하고 사용자에게 표시 할 수있는 기능이 더 필요했습니다. – krotov

+0

앱 폴더로 파일을 다운로드하는 것은 해당 API에서도 다룹니다. 아래로 스크롤하여 '파일 다운로드'섹션으로 이동하십시오. 그런 다음 사진을 표시하는 것은 [yourImageView setImage : [UIImage imageNamed : @ "MyDropBoxPhotos.jpg"]]만큼 쉽습니다. – Axeva

관련 문제