从 BOX SDK 下载文件 iOS

Download a file from BOX SDK iOS

我需要从 BOX sdk 下载图像到我的应用程序中。我已经使用 dropbox sdk 进行了此操作 - 似乎比 Box sdk 更容易。无论如何 - 我有一个返回文件名的委托方法,但我如何实际下载文件?

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

}

我最终投射到 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];
        }
    }];
}