2016-05-05 24 views
1

我有一个要求,可以说有3个用户为我的应用程序。我想为每个用户添加一个图像(配置文件图片用途),以便其他两个正在使用相同应用的用户可以看到该图像。就像whatsapp个人资料照片一样。所以为此我做了以下事情。如何上传用户个人资料图片以及如何从其他用户设备获取该个人资料图片?

第1步:以用户身份登录 然后我添加了这段代码来上传图片文件。在使用User1凭证登录后,我在上传文件时将公共属性设置为YES。

NSData *imageData = UIImagePNGRepresentation([UIImage imageNamed:@"arrow.png"]); 

[QBRequest TUploadFile:imageData fileName:@"arrow.png" contentType:@"image/png" isPublic:YES successBlock:^(QBResponse *response, QBCBlob *blob) { 

} statusBlock:^(QBRequest *request, QBRequestStatus *status) { 
} errorBlock:^(QBResponse *response) { 
}]; 

第2步:登录身份用户2

然后我做了这样的我获取所有用户是属于我的应用程序。使用

QBGeneralResponsePage *responsePage = [QBGeneralResponsePage responsePageWithCurrentPage:currentPage perPage:perPage]; 

[QBRequest usersForPage:responsePage successBlock:^(QBResponse *response, QBGeneralResponsePage *page, NSArray *users) { 

    weakSelf.allUsers = [users mutablecopy] 
    [weakSelf.tableView reloadData]; 

} errorBlock:^(QBResponse *response) { 

}]; 

第3步: 现在我把所有的用户,所以我做迭代找到用户BLOB ID。

QBUUser *user = (QBUUser *)self.allUsers[indexPath.row]; 


if (user.blobID != 0) { 

    [QBRequest downloadFileWithID:user.blobID successBlock:^(QBResponse *response, NSData *fileData) { 

     UIImage *img=[UIImage imageWithData:fileData]; 
     [cell.imageView setImage:img]; 

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

    } errorBlock:^(QBResponse *response) { 

    }]; 
} 

但问题是,我在这里没有得到任何blobID与用户1指的USER1 blobID为0(所有用户blobID为0),上传它是成功的,我上传了后blobID该文件使用User1登录。

但是,当我登录为用户2或用户3它没有显示任何与用户1相关的blobID。上传时,我将“公开”设为“是”。 这是正确的做法或我做的任何错误请让我知道吗?

+0

请检查您的服务器端,可能在你的API,URL一些问题,可能可能你的上传成功,但并不存储在D B。 –

+0

没有问题。它存储在admin.quickblox.com –

+0

响应没有问题。一旦上传成功,我将获得QBBlob。 –

回答

1

BLOB的上传后,您应该更新用户与QBUpdateUserParameters blobID使用要求:

 [QBRequest TUploadFile:imageData fileName:@"arrow.png" contentType:@"image/png" isPublic:YES successBlock:^(QBResponse *response, QBCBlob *blob) { 

      QBUpdateUserParameters *userParams = [QBUpdateUserParameters new]; 
      userParams.blobID = blob.ID; 

      [QBRequest updateCurrentUser:userParams successBlock:^(QBResponse * _Nonnull __unused response, QBUUser * _Nullable user) { 
      } errorBlock:^(QBResponse * _Nonnull response) { 

      }]; 

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

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

是的,它的工作先生,非常感谢。我对此有两个疑问。 1.天气我们应该保持IsPublic为YES或NO。当我们应该使用YES和NO。 –

+0

2.作为回应blob。我看到一个名为expires的属性。这是这样的:到期:2016-05-05T08:54:01Z。这个属性会做什么。天气这是告诉上传的文件到期时间? –

+0

你真是太棒了,先生。我一整天都在工作,但我没有得到解决方案。我按照文件中的说法做了。但它没有奏效。你的解决方案工作正常。非常感谢。 –

相关问题