【问题标题】:iOS dropbox SDK loading thumbnails and number of files inside a folderiOS Dropbox SDK 加载缩略图和文件夹内的文件数
【发布时间】:2013-04-18 05:09:19
【问题描述】:

大家好,我正在开发一个应用程序,它可以从任何内容管理系统中调出整个文件夹和文件结构,目前我已经完成了 Box 和 sharepoint 的集成。我现在正在寻找同步 Dropbox。在 DBMetaData 类中,我有属性

BOOL thumbnailExists;
NSArray* contents;
NSString* icon;
  1. 我想在这里做的第一件事是我想加载文件的缩略图,但我没有得到一个图标属性返回字符串的东西,比如“page_white_acrobat”(我认为它会返回一个 url 或我可以下载缩略图的东西)。有什么方法可以使用 Dropbox sdk 带来缩略图。我还上传了一个 .mp4 文件和 .png 文件,当我在 chrome 中打开 Dropbox 时它们会显示缩略图,但在 SDK 中 thumbnailExists 属性返回 NO。

  2. 其次,我想要子文件夹的数量和文件夹的文件,我尝试访问文件夹 DBMetaData 对象的内容属性,它返回 nil。 SDK中是否有任何方法可以计算文件夹中的文件数或任何解决方法。

【问题讨论】:

  • 我不知道为什么答案被标记为正确,因为它没有回答整个问题,只是第 2 部分。图标是保管箱上的内部图标,而不是缩略图 - KumarSumman 的答案更完整
  • @RyanHeitner 这是一个很老的问题,当时这是唯一的方法,所以我不得不接受答案。

标签: ios dropbox dropbox-api


【解决方案1】:
  1. Dropbox 似乎只是提供了他们使用的图标的名称。你不能下载它,所以你应该检查这个字符串并使用你的应用程序包中的资源。

  2. 在您实际请求在该路径加载元数据之前,DBMetadata 对象的内容将为空。

此代码将使您开始使用子目录。

-(void)restClient:(DBRestClient *)client loadedMetadata:(DBMetadata *)metadata
{
    // LOAD METADATA OF SUBDIRECTORIES
    for (DBMetadata *node in metadata.contents) {
        if (node.isDirectory) {
            [_restClient loadMetadata: node.path];
        }
    }

    // GET COUNT OF DIRECTORY CONTENTS
    if (metadata.isDirectory) {
        NSLog(@"%@ contains %d files and folders", metadata.path, metadata.contents.count);
    }
}

【讨论】:

  • 感谢这个代码示例!非常有帮助 !我在获取缩略图时遇到了麻烦。我尝试使用- (void)loadThumbnail:(NSString *)path ofSize:(NSString *)size intoPath:(NSString *)destinationPath; 但我不想将它们存储在设备上的临时文件中。有没有办法通过 SDK 将缩略图存储在任何 UIView 图像中?目的是在 UICollectionView 中将它们用作图像选择器!
【解决方案2】:

要列出路径或目录的内容,您需要调用 DBRESTClient 对象的以下方法:

 - (void)loadMetadata:(NSString*)path;

然后调用以下委托回调(请参阅方法主体的代码以下载列出目录中每个文件的缩略图):

 - (void)restClient:(DBRestClient*)client loadedMetadata:(DBMetadata*)metadata
 {
     for (DBMetadata *file in metadata.contents)
     {
         // 1. Use the DBMetadata * file object to do things like: add a table-view cell for the file.
         [self.filesListView addCellForFile: file];
         // 2. Request thumbnail for each file
         NSString *localThumbnailPath = [self localThumbnailPathForFile: file]; // create a local-file-path for the thumbnail
         [dbRestClient loadThumbnail: file.path ofSize:@"l" intoPath:localThumbnailPath];
     }
 }

在上述方法中,loadThumbnail:ofSize:intoPath: 方法将导致调用以下委托回调:

 - (void)restClient:(DBRestClient*)client loadedThumbnail:(NSString*)localPath

从中,您必须使用给定的 localPath 来使用下载的缩略图更新您的 UI。

【讨论】:

  • 建议在尝试下载前检查 DBMetadata thumbnailExists
猜你喜欢
  • 2015-11-09
  • 1970-01-01
  • 1970-01-01
  • 2016-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
相关资源
最近更新 更多