ios上传文件云服务器上,怎么在iOS中利用AFNetworking上传文件

怎么在iOS中利用AFNetworking上传文件

发布时间:2021-04-12 18:03:11

来源:亿速云

阅读:79

作者:Leah

怎么在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];

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值