iOS- 利用AFNetworking(AFN) - 实现图片上传
官方建议AFN的使用方法
1. 定义一个全局的AFHttpClient:包含有
1> baseURL
2> 请求
3> 操作队列 NSOperationQueue
2. 由AFHTTPRequestOperation负责所有的网络操作请求
3. 修改xxx-Prefix.pch文件
#import <MobileCoreServices/MobileCoreServices.h>
#import <SystemConfiguration/SystemConfiguration.h>
0.导入框架准备工作
•1. 将框架程序拖拽进项目
•2. 添加iOS框架引用
–SystemConfiguration.framework
–MobileCoreServices.framework
#import "AFNetworking.h"
1.AFN的客户端,使用基本地址初始化,同时会实例化一个操作队列,以便于后续的多线程处理
- 1 @interfaceViewController ()
- 2
- 3 {
- 4
- 5 // AFN的客户端,使用基本地址初始化,同时会实例化一个操作队列,以便于后续的多线程处理
- 6
- 7 AFHTTPClient *_httpClient;
- 17 NSOperationQueue *_queue;
- 18
- 19 }
- 1 - (void)viewDidLoad
- 2 {
- 3 [super viewDidLoad];
- 4
- 5 NSURL *url = [NSURL URLWithString:@"http://192.168.3.255/~apple/qingche"];
- 6 _httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
- 7
- 8 _queue = [[NSOperationQueue alloc] init];
- 9 }
2.利用AFN实现文件上传操作细节
- 1 #pragma mark - 文件上传
- 2 - (IBAction)uploadImage
- 3 {
- 4 /*
- 5 此段代码如果需要修改,可以调整的位置
- 6
- 7 1. 把upload.php改成网站开发人员告知的地址
- 8 2. 把file改成网站开发人员告知的字段名
- 9 */
- 10 // 1. httpClient->url
- 11
- 12 // 2. 上传请求POST
- 13 NSURLRequest *request = [_httpClient multipartFormRequestWithMethod:@"POST" path:@"upload.php" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
- 14 // 在此位置生成一个要上传的数据体
- 15 // form对应的是html文件中的表单
- 16
- 17
- 18 UIImage *image = [UIImage imageNamed:@"头像1"];
- 19 NSData *data = UIImagePNGRepresentation(image);
- 20
- 21 // 在网络开发中,上传文件时,是文件不允许被覆盖,文件重名
- 22 // 要解决此问题,
- 23 // 可以在上传时使用当前的系统事件作为文件名
- 24 NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
- 25 // 设置时间格式
- 26 formatter.dateFormat = @"yyyyMMddHHmmss";
- 27 NSString *str = [formatter stringFromDate:[NSDate date]];
- 28 NSString *fileName = [NSString stringWithFormat:@"%@.png", str];
- 29
- 30
- 31 /*
- 32 此方法参数
- 33 1. 要上传的[二进制数据]
- 34 2. 对应网站上[upload.php中]处理文件的[字段"file"]
- 35 3. 要保存在服务器上的[文件名]
- 36 4. 上传文件的[mimeType]
- 37 */
- 38 [formData appendPartWithFileData:data name:@"file" fileName:fileName mimeType:@"image/png"];
- 39 }];
- 40
- 41 // 3. operation包装的urlconnetion
- 42 AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request];
- 43
- 44 [op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
- 45 NSLog(@"上传完成");
- 46 } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
- 47 NSLog(@"上传失败->%@", error);
- 48 }];
- 49
- 50 //执行
- 51 [_httpClient.operationQueue addOperation:op];
iOS- 利用AFNetworking(AFN) - 实现图片上传的更多相关文章
- ASP利用xhEditor编辑器实现图片上传的功能。
本人这几天在做一个软件,无意中用到xhEditor在线编辑器,这个编辑器虽然看着比较简单,但功能非常强大,大家可以去官网上查看,废话不说了. 这篇文件主要是实现在ASP环境中利用xhEditor编辑器 ...
- iOS利用AFNetworking(AFN) 实现图片上传
1.上传图片以二进制流的形式上传 1 #pragma mark - 文件上传 2 - (IBAction)uploadImage 3 { 4 /* 5 此段代码如果需要修改, ...
- [Ting's笔记Day6]活用套件carrierwave gem:(1)在Rails实现图片上传功能
carrierwave是一款经典的图片上传套件,本篇的目标是先在本地端(development)的rails项目试成功gem. (预计中集的进度会练习怎么利用Amazone S3架设图片上传Host, ...
- [iOS AFNetworking框架实现HTTP请求、多文件图片上传下载]
简单的JSON的HTTP传输就不说了,看一个简单的DEMO吧. 主要明白parameters是所填参数,类型是字典型.我把这部分代码封装起来了,以便多次调用.也许写在一起更清楚点. #pragma m ...
- iOS- 利用AFNetworking(AFN) - 实现文件上传
官方建议AFN的使用方法 1. 定义一个全局的AFHttpClient:包含有 1> baseURL 2> 请求 3> 操作队列 NSOperationQueue 2. 由AFHTT ...
- IOS开发-图片上传
目前IOS端开发,图片上传到服务器分为两种,一种是直接上到服务器,一种是借助第三方储存(减少服务器压力). 一.直接上传到服务器 /** * 代码演示 */ //*******UIImagePNGRe ...
- 图片上传前 压缩,base64图片压缩 Exif.js处理ios拍照倒置等问题
曾写过在前端把图片按比例压缩不失真上传服务器的前端和后台,可惜没有及时做总结保留代码,只记得js利用了base64位压缩和Exif.js进行图片处理,还有其中让我头疼的ios拍照上传后会倒置等诸多问题 ...
- AFNetworking网络请求与图片上传工具(POST)
AFNetworking网络请求与图片上传工具(POST) .h文件 #import <Foundation/Foundation.h> /** 成功Block */ typedef vo ...
- iOS 开发之路(WKWebView内嵌HTML5之图片上传) 五
HTML5页面的图片上传功能在iOS端的实现. 首先,页面上用的是plupload组件,在wkwebview上存在两个坑需要修复才能正常使用. 问题:在webview上点击选择照片/相机拍摄,就会出现 ...
随机推荐
- 【转】Linux下XenServer管理工具安装
转载文章 - Linux下XenServer管理工具安装 Xen-Server 6.5 虚拟机安装Linux系统 vmware安装ubuntu12.04嵌套安装xen server(实现嵌套虚拟化) ...
- js对字符串函数之charAt()
var str="012345"; 字符串下标的index从0开始: charAt(index)返回指定位置的字符如果index不在0-str.length之间,返回一个空字符串: ...
- python中列表的操作
list1 = ['A' , 'B' , 'C'] list1[0] ; list1[-1] # 取第一个和最后一个元素 list1[ : ] ; list1[ : len(list1)] # 取所有 ...
- jquery 实现 点击按钮后倒计时效果,多用于实现发送手机验证码、邮箱验证码
原文链接:http://www.cnblogs.com/steed-zgf/archive/2012/02/03/2336984.html <!DOCTYPE html PUBLIC " ...
- iOS开发错误日志
错误提示:fatal error: file '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platfor ...
- SqlHelper帮助类
数据库连接字符串//Data Source=.;Initial Catalog=Test1;User Id=sa;Password=123456; public static class SqlHel ...
- 【转】Nginx+php-fpm+MySQL分离部署详解
转:http://www.linuxidc.com/Linux/2015-07/120580.htm Nginx+php-fpm+MySQL分离部署详解 [日期:2015-07-26] 来源:Linu ...
- hadoop工作流引擎之azkaban [转]
介绍 Azkaban是twitter出的一个任务调度系统,操作比Oozie要简单很多而且非常直观,提供的功能比较简单.Azkaban以Flow为执行单元进行定时调度,Flow就是预定义好的由一个或多个 ...
- checkbox 赋值给js 变量
var banuid =[];//定义一个数组 $('input[name="banuid[]"]:checked').each(function(){//遍 ...
- hdu 4628 Pieces
http://acm.hdu.edu.cn/showproblem.php?pid=4628 状态压缩DP 时间复杂度应该是 16*(2^32) 但是运行时要远小于这个数 所以加一定剪枝就可以过 代码 ...