内容很简单,只是本人不会写后台,只能用到野狗API,尝试着写一个后台接口,这里只做上传头像和下载效果,其中用到UIImage和NSData的互转,所以写日记记录下,和大家分享下.
//NSData转换为UIImage
NSData *imageData = [NSData dataWithContentsOfFile: imagePath];
UIImage *image = [UIImage imageWithData: imageData];
//UIImage转换为NSData
NSData *imageData = UIImagePNGRepresentation(aimae);
//下面是实例代码
#pragma mark 选择图片
//选中图片进入的代理方法
/**
* 选好图片调用的代理方法
*
* @param picker 显示选择图片的界面
* @param image 选中的图片
* @param editingInfo 编辑消息描述
*/
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
[picker dismissViewControllerAnimated:YES completion:nil];//推回弹出的相册或照相机
//获取图片
UIImage *imgh=info[UIImagePickerControllerOriginalImage];
userHeadImageView.image=imgh;//设置头像
// 在网络开发中,上传文件时,是文件不允许被覆盖,文件重名
// 要解决此问题,
// 可以在上传时使用当前的系统时间作为文件名
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
// 设置时间格式
formatter.dateFormat = @"yyyy-MM-dd-HH-mm-ss";
NSString *str = [formatter stringFromDate:[NSDate date]];
//将图片转为data数据
NSData *imageData = UIImageJPEGRepresentation(imgh, 0.5);
//将数据转为base64字符串
NSString *datastr = [imageData base64EncodedString];
//向网络上传头像
[self GetDataStr:str DataStr:datastr];
}
//上传头像到服务器
-(void)GetDataStr:(NSString *)str DataStr:(NSString *)datastr
{
//获取用户信息字典
userData = [UserData GetUserData];
NSString *userName =userData.mDic[@"UserName"];
//创建引用
Wilddog *myRootRef = [[Wilddog alloc]initWithUrl:@"https://--此处为自己申请的野狗API用户名--.wilddogio.com/User"];
#pragma mark 向服务器添加一个字典(注册)
//向服务器创建一个名为User的字典
Wilddog *usersRef = [myRootRef childByAppendingPath: userName];
//设置需要更新的数组名
Wilddog *hopperRef = [usersRef childByAppendingPath: @"UserHeadImage"];
//设置要更新的内容
NSDictionary *nickname = @{
@"ImageName": str,
@"ImageData":datastr,
};
//将内容上传服务器
[hopperRef updateChildValues: nickname];
}
//最后是加载用户头像 ,以上我没做过多的操作,数据是用户登录的时候存储的,上传图片到服务器,如果用户没有头像字典则自动添加一个字典,我这里只是展示数据,此方法在viewDidLoad中调用,
-(void)LoadData
{
userData = [UserData GetUserData];
NSDictionary *dic = [[NSDictionary alloc]init];
dic = userData.mDic[@"UserHeadImage"];
//获取NSData数据
NSData *dataStr = [NSData dataFromBase64String:dic[@"ImageData"]];
UIImage *image = [UIImage imageWithData:dataStr];
userHeadImageView.image = image;
}
//刚用简书,还没细细研究,字体颜色不好看勿怪