2014-12-28 2 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.UID9357c3d66b944880a82cdbeb836f143c00과 비슷합니다.

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 사용할 수있는 모든 모양을 통해 열거 원하는 방울을 찾아 그

- (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를 사용하고 있습니다). 같은 종류의 논리를 사용할 수 있습니까? 당신이 여기에서 찾을 수 있습니다

전체 프로젝트 : 그것은 보여주는 UIImageView에서 그것을 보여주는 다음 필요한 사용자, 업로드 및 다운로드 이미지를 생성 https://dl.dropboxusercontent.com/u/930742/so/QuickBloxSample.zip

모든 단계를 설명했다. (서비스 및 응용 프로그램 키를 AppDelegate에 설정하는 것을 잊지 마십시오.)

P. 관리자 패널에서는 콘텐츠 테이블의 ID에 click on ID

here is UID

+0

감사를 클릭하여 BLOB의 UID를 찾을 수 있습니다, 나는 BlobID와 UID 사이에 혼란이 있었다. 멕시코 인사말. :) –