2016-04-01 56 views
0

我需要从BOX sdk下载图像到我的应用程序。我已经在使用Dropbox sdk工作 - 似乎比Box sdk更容易。无论如何 - 我有一个委托方法返回文件的名称,但我怎么实际下载文件?从BOX SDK下载文件iOS

- (void)itemsViewController:(BOXItemsViewController *)itemsViewController didTapFile:(BOXFile *)file inItems:(NSArray *)items { 

    NSLog(@"Did tap file: %@", file.name); 

    BOXFileDownloadRequest *downloadRequest; 
    BOXContentClient *contentClient; 

    contentClient = [BOXContentClient defaultClient]; 
    NSOutputStream *outputStream = [[NSOutputStream alloc] initToMemory]; 
    downloadRequest = [_contentClient fileDownloadRequestWithID:file.name toOutputStream:outputStream]; 
    [_downloadRequest performRequestWithProgress:^(long long totalBytesTransferred, long long totalBytesExpectedToTransfer) { 
    } completion:^(NSError *error) { 
     if (error == nil) { 
      NSData *data = [outputStream propertyForKey:NSStreamDataWrittenToMemoryStreamKey]; 
      UIImage *img = [UIImage imageWithData:data]; 
      _uiiv_logo.image = img; 
     } 
     else{ 
     } 
    }]; 

} 
+0

您对发布的代码有什么问题? – rmaddy

+0

没有下载。我试过切换到BoxItem来让jsondict看到url,但他们是一个reblank。我想我需要启用共享。我试过了,现在显示的网址仍然没有下载。 – malaki1974

回答

0

我结束了投射到BOXItem获得'ID'。

- (void)itemsViewController:(BOXItemsViewController *)itemsViewController didTapFile:(BOXFile *)file inItems:(NSArray *)items 
{ 
    BOXItem *item = file; 
    BOXContentClient *contentClient = [BOXContentClient defaultClient]; 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsPath = [paths objectAtIndex:0]; //Get the docs directory 
    NSString *localFilePath = [documentsPath stringByAppendingPathComponent:@"NSURLSession.png"]; 

    BOXFileDownloadRequest *boxRequest = [contentClient fileDownloadRequestWithID:[item.JSONData valueForKey:@"id"] toLocalFilePath:localFilePath]; 
    [boxRequest performRequestWithProgress:^(long long totalBytesTransferred, long long totalBytesExpectedToTransfer) { 
     // Update a progress bar, etc. 
     NSLog(@"progress %lld",totalBytesTransferred); 
    } completion:^(NSError *error) { 
     // Download has completed. If it failed, error will contain reason (e.g. network connection) 
     if (error) { 
      NSLog(@"error %@",[error description]); 
      [[NSNotificationCenter defaultCenter] postNotificationName:@"customUpdateBG" object:nil]; 
     } 
    }]; 
}