如何上传用户个人资料图片以及如何从其他用户设备获取该个人资料图片?
How to upload the Users profile pic and how to fetch that profile pic from another users device?
我有一个要求,假设我的应用程序有 3 个用户。我想为每个用户添加一个图像(个人资料图片目的),以便使用同一应用程序的其他两个用户可以看到该图像。就像 whatsapp 个人资料照片一样。为此,我做了以下事情。
第 1 步:以用户 1 身份登录
然后我添加了这段代码来上传图像文件。在我使用 User1 凭据登录后,我在上传文件时将 Public 属性 设置为 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) {
}];
}
但问题是我没有得到任何 blobID User1 意味着 user1 的 blobID 为 0(所有用户 blobID 为 0),但是上传成功在使用登录的 User1 上传文件后,我得到了 blobID。
但是当我以 user2 或 User3 登录时,它没有显示与 user1 关联的任何 blobID。我在上传时将 Public 设置为是。
这是正确的做法还是我做的任何错误请告诉我?
您应该在 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) {
}];
我有一个要求,假设我的应用程序有 3 个用户。我想为每个用户添加一个图像(个人资料图片目的),以便使用同一应用程序的其他两个用户可以看到该图像。就像 whatsapp 个人资料照片一样。为此,我做了以下事情。
第 1 步:以用户 1 身份登录 然后我添加了这段代码来上传图像文件。在我使用 User1 凭据登录后,我在上传文件时将 Public 属性 设置为 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) {
}];
}
但问题是我没有得到任何 blobID User1 意味着 user1 的 blobID 为 0(所有用户 blobID 为 0),但是上传成功在使用登录的 User1 上传文件后,我得到了 blobID。
但是当我以 user2 或 User3 登录时,它没有显示与 user1 关联的任何 blobID。我在上传时将 Public 设置为是。 这是正确的做法还是我做的任何错误请告诉我?
您应该在 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) {
}];