2014-12-28 94 views
1

我正在嘗試使用Quickblox API下載圖像文件。我可以上傳文件,但是當我嘗試下載時,NSData圖像不顯示圖像。如何使用QuickBox API下載圖像?

// Upload a user avatar, previously log in Quickblox API 
       NSData *avatar = UIImagePNGRepresentation([UIImage imageNamed:@"userWhite"]); 
       [QBRequest TUploadFile:avatar fileName:@"avatar.png" contentType:@"image/png" isPublic:YES successBlock:^(QBResponse *response, QBCBlob *blob) { 
        // Success 
       } statusBlock:^(QBRequest *request, QBRequestStatus *status) { 

       } errorBlock:^(QBResponse *response) { 

       }]; 

圖片上傳:Image

下載頭像:

NSString* userProfilePictureID = [NSString stringWithFormat:@"%ld",(long)[[LocalStorageService shared] currentUser].blobID]; // user - an instance of QBUUser class 
    // download user profile picture 
    [QBRequest downloadFileWithUID:@"318547" successBlock:^(QBResponse *response, NSData *fileData) { UIImage* image = [UIImage imageWithData:fileData]; 

    } statusBlock:^(QBRequest *request, QBRequestStatus *status) { 

    } errorBlock:^(QBResponse *response) { 
    }]; 

的UIImage不顯示任何圖像。我能做什麼? NSData未損壞。

回答

1

您的下載代碼看起來不錯。您基本上應該調用QBRequest方法並將blob.UID傳遞給它。 但在我的情況下,blob.UID就是這樣的9357c3d66b944880a82cdbeb836f143c00。然而,有步驟,我走上完成任務:

1)報名,或致電+[QBRequest signUp:successBlock:errorBlock:]+[QBRequest logInWithUserLogin:password:successBlock:errorBlock]登錄用戶

無論是。

2)所有可用的斑點枚舉當前用戶

[QBRequest blobsWithSuccessBlock:^(QBResponse* response, 
            QBGeneralResponsePage* page, 
            NSArray* blobs) { 
     [self findAndShowAvatarFromBlobs:blobs]; 
    } errorBlock:^(QBResponse* response) { <...> }]; 

3)找到所需的blob和下載

- (void)findAndShowAvatarFromBlobs:(NSArray*)blobs { 
    for (QBCBlob* blob in blobs) { 
    if ([blob.name hasPrefix:@"avatar"]) { 
     [QBRequest downloadFileWithUID:blob.UID 
      successBlock:^(QBResponse* response, NSData* fileData) { 
       UIImage* image = [UIImage imageWithData:fileData]; 
       self.imageView.image = image; 
      } 
      statusBlock:^(QBRequest* request, QBRequestStatus* status) { <...> } 
      errorBlock:^(QBResponse* response) { <...> }]; 
    } 
    } 
} 

也許你有得到有效的斑點UID的問題(我懷疑你正在使用不同於UID的blob ID)。你有可能使用相同的邏輯嗎?

全部項目,你可以在這裏找到:https://dl.dropboxusercontent.com/u/930742/so/QuickBloxSample.zip

它創建必要的用戶,上傳和下載,然後用圖像顯示它UIImageView展示所有描述的步驟。 (不要忘記設置您的服務和應用程序密鑰在AppDelegate

P.S.在管理面板,你可以通過點擊它的ID在內容表 click on ID

here is UID

+0

由於發現斑點UID,我有BlobID和UID之間的混淆。來自墨西哥的問候。 :) –