afn上传图片到php,iOS利用AFNetworking实现文件上传的示例代码

0.导入框架准备工作

1. 将框架程序拖拽进项目

2.  添加iOS框架引用

–SystemConfiguration.framework

–MobileCoreServices.framework

3.  引入

#import "AFNetworking.h"

4. 修改xxx-Prefix.pch文件

#import

#import

1.AFN的客户端,使用基本地址初始化,同时会实例化一个操作队列,以便于后续的多线程处理

@interfaceViewController ()

{

// AFN的客户端,使用基本地址初始化,同时会实例化一个操作队列,以便于后续的多线程处理

AFHTTPClient *_httpClient;

NSOperationQueue *_queue;

}

- (void)viewDidLoad

{

[super viewDidLoad];

NSURL *url = [NSURL URLWithString:@"http://192.168.3.255/~apple/qingche"];

_httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];

_queue = [[NSOperationQueue alloc] init];

}

2.利用AFN实现文件上传操作细节

#pragma mark - 文件上传

- (IBAction)uploadImage

{

/*

此段代码如果需要修改,可以调整的位置

1. 把upload.php改成网站开发人员告知的地址

2. 把file改成网站开发人员告知的字段名

*/

// 1. httpClient->url

// 2. 上传请求POST

NSURLRequest *request = [_httpClient multipartFormRequestWithMethod:@"POST" path:@"upload.php" parameters:nil constructingBodyWithBlock:^(id formData) {

// 在此位置生成一个要上传的数据体

// form对应的是html文件中的表单

UIImage *image = [UIImage imageNamed:@"头像1"];

NSData *data = UIImagePNGRepresentation(image);

// 在网络开发中,上传文件时,是文件不允许被覆盖,文件重名

// 要解决此问题,

// 可以在上传时使用当前的系统事件作为文件名

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];

// 设置时间格式

formatter.dateFormat = @"yyyyMMddHHmmss";

NSString *str = [formatter stringFromDate:[NSDate date]];

NSString *fileName = [NSString stringWithFormat:@"%@.png", str];

/*

此方法参数

1. 要上传的[二进制数据]

2. 对应网站上[upload.php中]处理文件的[字段"file"]

3. 要保存在服务器上的[文件名]

4. 上传文件的[mimeType]

*/

[formData appendPartWithFileData:data name:@"file" fileName:fileName mimeType:@"image/png"];

}];

// 3. operation包装的urlconnetion

AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request];

[op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

NSLog(@"上传完成");

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {

NSLog(@"上传失败->%@", error);

}];

//执行

[_httpClient.operationQueue addOperation:op];

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值