2013-01-03 170 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]; 
      } 
     } 
    } 
} 

刚出显示从Dropbox的本地文件夹中的照片列表。也许有人知道如何做到这一点? 我希望它像从相册:

- (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); 
} 

元数据对象是你如何让文件和文件夹信息在用户的Dropbox的。调用loadMetadata:on /将加载根文件夹的元数据,由于它是一个文件夹,content属性将包含该文件夹中包含的文件和文件夹的列表。建议保留这些数据,以便下一次您想使用某个文件执行某些操作时,可以将其当前元数据与您存储的元数据进行比较,以确定该文件是否已更改。查看DBMetadata.h以查看所有信息元数据对象。

+0

我读了Dropbox API文档。但我需要更多的东西,可以将它们保存在应用程序文件夹中并显示给用户。 – krotov

+0

将文件下载到您的应用程序文件夹也包含在其API中。向下滚动到“下载文件”部分。然后显示一张照片就像[yourImageView setImage:[UIImage imageNamed:@“MyDropBoxPhotos.jpg”]]; – Axeva