1

Dropbox 内のすべての写真のリストをユーザーに表示し、(プロジェクトでダウンロードするために) それらを使用できるようにする必要があります。ユーザーが自分のフォト アルバムから写真を選ぶように単純化します。Dropbox SDK v1.3.3 を使用しています。

アップデート:

これは私がこれまで行ったことです:

- (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];
}
4

1 に答える 1

1

Dropbox APIは、特定のフォルダー内のファイルを一覧表示するためのサンプルコードを示しています。

フォルダ内のファイルを一覧表示します

フォルダ内のファイルを一覧表示する次の呼び出しで、アップロードしたばかりのフォルダ内のファイルを一覧表示できます。

[[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 /を呼び出すと、ルートフォルダーのメタデータが読み込まれます。これはフォルダーであるため、contentsプロパティには、そのフォルダーに含まれるファイルとフォルダーのリストが含まれます。次回ファイルで何かをしたいときに、現在のメタデータを保存したものと比較して、ファイルが変更されたかどうかを識別できるように、このデータを保持しておくことをお勧めします。DBMetadata.hをチェックして、メタデータオブジェクトが持つすべての情報を確認してください。

于 2013-01-03T14:04:18.623 に答える