一.AFNetworking上传图片

/**

需要Demo,可留言

*/

1.利用AFnetworking上传图片.

2.注意将UIImage类型转化为NSData类型,传给后台.

二.Demo

//
// ViewController.m
// Demo-AFNetworking-上传图片
//
// Created by quhaola on 16/4/8.
// Copyright © 2016年 MC. All rights reserved.
// #import "ViewController.h" #import <MobileCoreServices/MobileCoreServices.h>
#import "AFHTTPRequestOperationManager.h" #define YYIP @"http://服务器地址" @interface ViewController () <UINavigationControllerDelegate,UIImagePickerControllerDelegate> @property (nonatomic, strong) UIImageView * imageView; @end @implementation ViewController #pragma mark - 生命周期
- (void)viewDidLoad {
[super viewDidLoad]; //从相册选择
[self addLibraryButton]; //从拍照选取
[self addPhotoButton]; //展示选择或者拍照的图片
[self addImageView];
} #pragma mark - 实现方法 #pragma mark 相册按钮
- (void)addLibraryButton
{
UIButton * libraryButton = [UIButton buttonWithType:UIButtonTypeCustom];
libraryButton.frame = CGRectMake(, , , );
libraryButton.backgroundColor = [UIColor blueColor];
[libraryButton setTitle:@"相册" forState:UIControlStateNormal]; [libraryButton addTarget:self action:@selector(addLibraryButtonClicked) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:libraryButton];
} #pragma mark 拍照按钮
- (void)addPhotoButton
{
UIButton * photoButton = [UIButton buttonWithType:UIButtonTypeCustom];
photoButton.frame = CGRectMake(, , , );
photoButton.backgroundColor = [UIColor blueColor];
[photoButton setTitle:@"拍照" forState:UIControlStateNormal]; [photoButton addTarget:self action:@selector(photoButtonClicked) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:photoButton];
} #pragma mark 展示图片
- (void)addImageView
{
self.imageView = [[UIImageView alloc] init];
self.imageView.frame = CGRectMake(, , self.view.bounds.size.width - , ); self.imageView.backgroundColor = [UIColor grayColor];
[self.view addSubview:self.imageView];
} #pragma mark - 点击事件 #pragma mark 相册按钮的点击事件
- (void)addLibraryButtonClicked
{
NSLog(@"相册"); //先判断是否支持相册类型
if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary])
{
NSLog(@"相册不可用");
return;
} //创建图片选取类
UIImagePickerController * imagePickerController = [[UIImagePickerController alloc] init];
imagePickerController.delegate = self;
imagePickerController.allowsEditing = YES; imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; [self presentViewController:imagePickerController animated:YES completion:^{ }];
} #pragma mark 拍照按钮的点击事件
- (void)photoButtonClicked
{
NSLog(@"拍照"); if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{
NSLog(@"相机不可用");
return;
} NSArray * availableMeidatypes = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera]; BOOL canTakePicture = NO; for (NSString * mediaType in availableMeidatypes)
{
if ([mediaType isEqualToString:(NSString *)kUTTypeImage])
{ //支持拍照
canTakePicture = YES;
break;
}
} if (!canTakePicture)
{
NSLog(@"不支持拍照");
return;
} //创建图片选取控制器
UIImagePickerController * imagePickerController = [[UIImagePickerController alloc] init]; imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera; imagePickerController.mediaTypes = [[NSArray alloc] initWithObjects:(NSString *)kUTTypeImage, nil]; imagePickerController.allowsEditing = YES; imagePickerController.delegate = self; [self presentViewController:imagePickerController animated:YES completion:^{ }];
} #pragma mark - UIimagePickerController的代理方法 #pragma mark 确认按钮
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info
{
//获取媒体类型
NSString * mediaType = [info objectForKey:UIImagePickerControllerMediaType]; //判断是静态还是视频
//如果是图片
if ([mediaType isEqualToString:(NSString *)kUTTypeImage])
{ //获取用户编辑之后的图像
UIImage * editedImage = [info objectForKey:UIImagePickerControllerEditedImage]; [self sendNetWorking_iconWithImage:(UIImage *)editedImage]; //将图像保存到媒体库中
UIImageWriteToSavedPhotosAlbum(editedImage, self, @selector(image:didFinishSavingWithError:contextInfo:), NULL); self.imageView.image = editedImage; [self dismissViewControllerAnimated:YES completion:^{ }];
}
} #pragma mark 取消按钮
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{ } #pragma mark 将该图像保存到媒体库中调用的方法
- (void)image:(UIImage*)image didFinishSavingWithError:(NSError*)error contextInfo:(void*)contextInfo{ if (!error)
{
NSLog(@"保存成功");
}
else
{
NSLog(@"保存失败");
}
}

#pragma mark 发起网络请求

- (void)sendNetWorking_iconWithImage:(UIImage *)image

{
NSString * urlStr = [NSString stringWithFormat:@"%@%@",YYIP,@"changeAvatar"]; //除了文件
NSDictionary * parameter = @{
@"id" : @""
}; AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager POST:urlStr parameters:parameter constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { /** 参数:
1. data:<#(nonnull NSData *)#> 获取的UIImage对象,转化为NSData类型
2. name:<#(nonnull NSString *)#> 与后台规定的名字一致
3. fileName:<#(nonnull NSString *)#> 文件的名字,必须不一致,可以用当前时间作为文件名
4. mineType:<#(nonnull NSString *)#> 文件类型
*/ NSData *imageData = UIImageJPEGRepresentation(image, 0.3); [formData appendPartWithFileData:imageData name:@"avatar" fileName:@"image.png" mimeType:@"image/jpeg"]; } success:^(AFHTTPRequestOperation *operation, id responseObject) { NSLog(@"responseObject: %@",responseObject); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"error: %@",error);
}]; } @end

iOS-AFNetworking-上传图片的更多相关文章

  1. iOS开发通过AFNetworking上传图片到服务器

    iOS开发通过AFNetworking上传图片到服务器 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; manager. ...

  2. IOS AFNETWORKING POST

    IOS AFNETWORKING POST 请求 #pragma mark post 请求 // 获取 url 路劲,不带参数 NSString *requestUrl = [[url compone ...

  3. iOS 批量上传图片的 3 种方法

    AFNetworking 在去年年底升级到了 3.0.这个版本更新想必有很多好处,然而让我吃惊的是,它并没有 batch request 接口.之前的 1.x 版本.2.x 版本都实现了这个很常见的需 ...

  4. PHP -- 上传文件接口编写 及 iOS -- 端上传图片AF实现

    PHP 上传文件接口: //保存图片 $json_result ['status'] = 0; $path = 'upfile'; $json_result ['status'] = 0; $json ...

  5. iOS - AFNetworking 网络请求

    前言 在 iOS 开发中,一般情况下,简单的向某个 Web 站点简单的页面提交请求并获取服务器的响应,用 Xcode 自带的 NSURLConnection 是能胜任的.但是,在绝大部分下我们所需要访 ...

  6. IOS开发--上传图片

    IOS图片上传功能实现总结 IOS图片上传主要分两种方式实现,一个是将图片信息以表单的形式上传,一种是将图片以JSON的格式上传. 首先要讲的是以这两个方式上传的一个比较明显的区别就是HTTP Hea ...

  7. iOS AFNetworking的使用

    转:http://www.cnblogs.com/lookenwu/p/3927897.html AFNetworking几乎是iOS上最常用的HTTP库了,AFNetworking也确实用起来简单, ...

  8. IOS AFNetworking简介及使用

    转:http://www.it165.net/pro/html/201405/13099.html 一AFNetworking简介AFNetworking是一个在IOS开发中使用非常多网络开源库,适用 ...

  9. iOS AFNetWorking源码详解(一)

    来源:Yuzeyang 链接:http://zeeyang.com/2016/02/21/AFNetWorking-one/ 首先来介绍下AFNetWorking,官方介绍如下: AFNetworki ...

  10. iOS AFNetWorking下得Basic Auth认证请求方式

    我新入职了一家公司,做了一个项目,服务器的大哥说他采用的是Basic Auth认证请求方式,一般我们用的都是OAuth的认证方式,下面我们就对比一下这两种认证方式 百度百科得到如下 Basic Aut ...

随机推荐

  1. ArrayList/Vector的原理、线程安全和迭代Fail-Fast

    疑问 * ArrayList是非线程非安全的,具体是指什么?具体会产生什么问题?* ArrayList的内部原理是什么?为什么可以动态扩容?* Vector是线程安全的,具体是如何实现的?为什么不再推 ...

  2. Entity Framework一对多关系添加数据的两种方式

    当使用Entity Framework添加一对多关系数据的时候,通常先添加一的数据,然后再添加多的数据.类似这样: //添加一的数据 var category = new Category{Name= ...

  3. MongoDB图形化管理工具

    NoSQL的运动不止,MongoDB 作为其中的主力军发展迅猛,也带起了一股开发图形化工具的风潮:气死反过来说,看一个产品是否得到认可,可以侧面看其第三方工具的数量和成熟程度:简单的收集了MongoD ...

  4. 闲暇时间开发的个人app

    最近一段时间公司不是很忙,晚上基本没怎么加班.所以自己利用晚上在家的时间开发了一个app(奇趣营),其实自从转android开发以来,就有想过要自己开发一个app.一方面可以提升自己的经验:另一方面可 ...

  5. Android中GPS类及方法简介

    GPS是Global Positioning System(全球定位系统)的简称,它的作用就是为全球的物体提供定位功能.GPS定位是一门高新技术,但对于Android程序员来说,开发GPS功能的应用程 ...

  6. ubuntu 16.04 vnc server

    安装方法 https://help.ubuntu.com/community/VNC/Servers#vino 系统默认自带的,通过搜索Remote Desktop来找到它 配置好之后,设定一下密码 ...

  7. 查看Oracle数据库的用户名和密码

    运行 cmd 按如下输入命令 sqlplus / as sysdba ---------以sys登陆          超级用户(sysdba) alter user 用户名 account unlo ...

  8. mysql慢日志设置

    mysql的慢日志查询对于sql的优化还是很有意义的,具体说下如何开启这个mysql慢查询日志(默认是开启的). 关于设置在mysql的官方手册或网上都有很多,但是要注意的是,mysql5.6与之前的 ...

  9. Web 开发常备工具

    工欲善其事,必先利其器.如今 Web 开发标准越来越高,Web 开发者也在不断寻找途径提升自己的技能.为使大家的开发工作更顺利进行,本文整理了 10+ 款比较优秀的 Web 开发工具,希望对你有帮助. ...

  10. EventBus 3.0使用

    在没用eventBus之前一直用Android广播方式通知消息更新UI 广播写法 首先发送广播通知 Intent intent = new Intent(); intent.setAction(&qu ...