iOS利用AFNetworking实现文件上传的示例代码

所属分类: 软件编程 / IOS 阅读数: 1626
收藏 0 赞 0 分享

0.导入框架准备工作                                   

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

2.  添加iOS框架引用

–SystemConfiguration.framework

–MobileCoreServices.framework

3.  引入

#import "AFNetworking.h"

4. 修改xxx-Prefix.pch文件

#import <MobileCoreServices/MobileCoreServices.h>

#import <SystemConfiguration/SystemConfiguration.h>

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<AFMultipartFormData> 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];

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

更多精彩内容其他人还在看

iOS UISearchController的使用方法

本文主要介绍了iOS UISearchController的使用方法,具有很好的参考价值,下面跟着小编一起来看下吧
收藏 0 赞 0 分享

IOS 中 new 和 alloc init 的对比

这篇文章主要介绍了IOS 中 new 和 alloc init 的区别的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

IOS 字符串常用处理详细介绍

这篇文章主要介绍了IOS 字符串常用处理详细介绍的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

iOS开发支付宝支付成功返回字符串的处理操作

很多朋友在做ios开发项目时,遇到支付宝支付成功返回字符串的处理操作不知道该怎么办,今天小编给大家分享实例代码,需要的朋友参考下
收藏 0 赞 0 分享

IOS CoreLocation实现系统自带定位的方法

本篇文章主要介绍了IOS Core Location实现系统自带定位的方法,非常具有实用价值,需要的朋友可以参考下。
收藏 0 赞 0 分享

iOS之点击通知栏的通知进入程序的触发事件

本文主要介绍了iOS中点击通知栏的通知进入程序的触发事件的相关知识,具有很好的参考价值,下面跟着小编一起来看下吧
收藏 0 赞 0 分享

IOS  Swift基础之switch用法详解

这篇文章主要介绍了IOS Swift基础之switch用法详解的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

IOS React等Title不显示问题解决办法

这篇文章主要介绍了IOS React等Title不显示问题解决办法的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

iOS UIScrollView滚动视图/无限循环滚动/自动滚动的实例代码

这篇文章主要介绍了iOS UIScrollView滚动视图/无限循环滚动/自动滚动,需要的朋友可以参考下
收藏 0 赞 0 分享

简单实现iOS指纹解锁(TouchID)

这篇文章主要介绍了如何简单实现iOS指纹解锁,验证TouchID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享
查看更多