版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yun_bao_2144899870/article/details/88118045
在大部分app中,登录注册是必不可少的功能,那么头像的上传与更改就必不可少了。下面简单的举例解释下 视频直播源码中iOS开发中如何使用AFNetworking进行图片上传,这里是上传到服务器。
具体流程就是首先从相机或者相册(这里以相册为例)取到需要上传,然后转成image,再利用AFNetworking进行上传。
视频直播源码代码示列如下:
//从相册选择图片
- (IBAction)xiangce:(id)sender {
UIImagePickerController *imagePickerController = [UIImagePickerController new];
imagePickerController.allowsEditing = YES;
imagePickerController.delegate = self;
imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
imagePickerController.allowsEditing = YES;
[self presentViewController:imagePickerController animated:YES completion:nil];
}
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{
NSString *type = [info objectForKey:UIImagePickerControllerMediaType];
if ([type isEqualToString:@"public.image"])
{
//先把图片转成NSData
UIImage* image = [info objectForKey:@"UIImagePickerControllerEditedImage"];
NSData *data;
if (UIImagePNGRepresentation(image) == nil){
data = UIImageJPEGRepresentation(image, 1.0);
}
else{
data = UIImagePNGRepresentation(image);
}
//图片保存的路径
NSString * DocumentsPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
NSFileManager *fileManager = [NSFileManager defaultManager];
//把刚刚图片转换的data对象拷贝至沙盒中 并保存为image.png
[fileManager createDirectoryAtPath:DocumentsPath withIntermediateDirectories:YES attributes:nil error:nil];
[fileManager createFileAtPath:[DocumentsPath stringByAppendingString:@"/image.png"] contents:data attributes:nil];
//得到选择后沙盒中图片的完整路径
filePath = [[NSString alloc]initWithFormat:@"%@%@",DocumentsPath, @"/image.png"];
imageURL = [NSURL URLWithString:filePath];
AFHTTPSessionManager *session = [AFHTTPSessionManager manager];
NSString *url = [purl stringByAppendingFormat:@"?service=User.updateAvatar&uid=%@&token=%@",[Config getOwnID],[Config getOwnToken]];
[session POST:url parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
if (image) {
[formData appendPartWithFileData:[Utils compressImage:image] name:@"file" fileName:@"duibinaf.png" mimeType:@"image/jpeg"];
}
}
progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
//NSLog(@"%@",responseObject);
NSLog(@"-------%@",responseObject);
NSArray *data = [responseObject valueForKey:@"data"];
NSString *ret = [NSString stringWithFormat:@"%@",[responseObject valueForKey:@"ret"]];
if ([ret isEqual:@"200"]) {
NSNumber *number = [data valueForKey:@"code"] ;
if([number isEqualToNumber:[NSNumber numberWithInt:0]])
{
// [[SDImageCache sharedImageCache] clearDisk];
[[SDImageCache sharedImageCache] clearMemory];//可有可无
NSString *info = [[data valueForKey:@"info"] firstObject];
NSString *avatar = [info valueForKey:@"avatar"];
NSString *avatar_thumb = [info valueForKey:@"avatar_thumb"];
[self.iconBTN sd_setBackgroundImageWithURL:[NSURL URLWithString:avatar] forState:UIControlStateNormal];
LiveUser *user = [[LiveUser alloc]init];
user.avatar = avatar;
user.avatar_thumb = avatar_thumb;
[Config updateProfile:user];
}
}
else{
[MBProgressHUD showError:[responseObject valueForKey:@"msg"]];
}
}
failure:^(NSURLSessionDataTask *task, NSError *error)
{
[MBProgressHUD showError:YZMsg(@"上传失败")];
}];
[picker dismissViewControllerAnimated:YES completion:nil];
}
}
以上就是视频直播源码中iOS开发中使用AFNetworking进行图片上传代码示列,这里只是介绍从手机相册上传到服务器的简单流程。如有想了解更多关于视频直播源码开发的知识,可以咨询官方客服,我们都会为您详细解答。
声明:原创文章,转载请注明出处及作者。