【问题标题】:How to upload the Users profile pic and how to fetch that profile pic from another users device?如何上传用户个人资料图片以及如何从其他用户设备获取该个人资料图片?
【发布时间】:2016-05-05 06:22:48
【问题描述】:

我有一个要求,假设我的应用有 3 个用户。我想为每个用户添加一个图像(个人资料图片目的),以便使用同一应用程序的其他两个用户可以看到这个图像。就像whatsapp个人资料图片一样。所以为此我做了以下事情。

第 1 步:以 User1 身份登录 然后我添加了这个代码来上传图像文件。在我使用 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 步:以 User2 身份登录

然后我这样做了,我正在获取属于我的应用的所有用户。使用

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) {

    }];
}

但问题出在这里,我没有得到任何带有 User1 的 blobID 意味着 user1 的 blobID 为 0(所有用户 blobID 为 0),但是上传成功后我得到了 blobID使用 User1 登录上传文件。

但是当我以 user2 或 User3 身份登录时,它没有显示任何与 user1 关联的 blobID。我在上传时将其设为“是”。 这是正确的做法还是我正在做的任何错误请告诉我?

【问题讨论】:

  • 请检查您的服务器端,可能是您的 API 和 URl 有问题,也可能您的上传成功但未存储在 DB 中。
  • 没有问题。它存储在 admin.quickblox.com
  • 响应没有问题。上传成功后,我将获得 QBBlob。

标签: ios iphone xcode blob quickblox


【解决方案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) {
        }];

【讨论】:

  • 是的,它的工作,先生,非常感谢。我对此有两个疑问。 1. 天气我们应该保持 IsPublic 为 YES 或 NO。什么时候应该使用 YES 和 NO。
  • 2.作为响应blob。我看到了一个名为 expires 的属性。就像这样:过期:2016-05-05T08:54:01Z。这个属性会做什么。天气这说明上传文件的到期时间?
  • 你真的很棒,先生。我为此工作了一整天,但我没有得到解决方案。我按照文件中的说明做了。但它没有用。使用您的解决方案,它可以正常工作。非常感谢。
  • @Wills-In Info 关于isPublic 财产
  • 先生,我可以通过邮件与您联系吗?我真的很想知道快速 blox 真的很好。这是我的邮件 ID:myiosgallery@gmail.com 请给我发邮件以便我们可以联系我不会打扰你但是如果我有任何疑问我先生,我也会给你发邮件,我也会在堆栈溢出中发布同样的问题,以便其他人也可以找到他们查询的解决方案
猜你喜欢
  • 2014-09-15
  • 1970-01-01
  • 2018-12-27
  • 2018-08-25
  • 2020-11-02
  • 2017-05-04
  • 1970-01-01
  • 2017-12-20
  • 1970-01-01
相关资源
最近更新 更多