iOS更换用户头像失败

   相信很多项目里都涉及到用户头像替换这个问题,公司后台直接在提交头像的接口里就返回了头像地址,并且是不变的,就是说头像地址一直是不变的(项目使用了SDWebImage库),提交了头像后不能替换过来,估计原因是SD库里有缓存,而且这个缓存可能跟头像路径有关系,所以尝试改变头像路径。后台是肯定可以做到的,客户端怎样改变路径,而且要每次都不同,想到了时间戳,直接上代码吧

[loadImage sendPictures: ^(UIImage *image)

{
NSData * imageData = UIImageJPEGRepresentation(image, 1);
NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:imageData forKey:@"headPhoto"];
NSString *uid = [WSUserDefaultUtils getValueforKey:@"userID"];
//向服务器提交选好的照片
NSDictionary * dict = @{@"userId":uid};


NSMutableDictionary * loadDict = [[NSMutableDictionary alloc]init];
[loadDict setValue:imageData forKey:@"headImage"];

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html",@"text/plain",nil];

// 参数
NSString * stringURL = [NSString stringWithFormat:@"%@%@",API,@"AccountService/updateUserHeadImage"];
// 访问路径
[manager POST:stringURL parameters:dict constructingBodyWithBlock:^(id<AFMultipartFormData> formData)
{
// 上传文件
NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyyMMddHHmmss";
NSString * str = [formatter stringFromDate:[NSDate date]];
NSString * fileName = [NSString stringWithFormat:@"%@.jpg", str];

[formData appendPartWithFileData:imageData name:@"headImage" fileName:fileName mimeType:@"image/png"];

}
progress:^(NSProgress * _Nonnull uploadProgress)
{

} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject)
{
[self.view makeToast:@"替换头像成功" duration:1.5 position:CSToastPositionCenter];

[self.headBtn setBackgroundImage:image forState:UIControlStateNormal];
NSString * stamp = [NSFormatter dateConvertStamp];//当前时间转换为时间戳
NSString * newImage = [NSString stringWithFormat:@"%@?%@",responseObject[@"data"],stamp];//头像路径加时间戳

[[NSUserDefaults standardUserDefaults] setObject:newImage forKey:@"image"];

// [self.headBtn setImage:image forState:UIControlStateNormal];;//成功提交后才改变页面的头像

} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error)
{
[self.view makeToast:@"替换头像失败" duration:1.5 position:CSToastPositionCenter];
NSLog(@"[error description] = %@",[error description]);
}];


}];

其实还有一种笨方法,既然路径已经给了,就可以直接从路径里拿数据,把头像文件的二进制文件下载下来,简单来说就是nsdata转成uiimage就行了

  








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值