AFHTTPSessionManager *manager   = [AFHTTPSessionManager manager];

NSString *string                        = @"admin:100";

NSData          *originData             = [string dataUsingEncoding:NSASCIIStringEncoding];

NSString        *encodeResult           = [originData base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];

NSString        *end                    = [NSString stringWithFormat:@"Basic %@",encodeResult];

manager.requestSerializer               = [AFHTTPRequestSerializer serializer];

manager.responseSerializer              = [AFJSONResponseSerializer serializer];

manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",

@"text/html",

@"image/jpeg",

@"image/png",

@"application/octet-stream",

@"text/json",

nil];

[manager.requestSerializer setValue:end forHTTPHeaderField:@"Authorization"];

[manager.requestSerializer setValue:@"multipart/form-data"                     forHTTPHeaderField:@"Content-Type"];

NSString                *urlStr     = [NSString stringWithFormat:@"%@%@",kNetIp,Net_UploadImg];

NSMutableDictionary     *parameters = [[NSMutableDictionary alloc]init];

NSLog(@" 上传图片请求参数 url %@ %@ manager %@",urlStr,parameters,manager.requestSerializer.HTTPRequestHeaders);

[manager POST:urlStr parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData)

{

// 上传文件

NSData *imageData;

if (UIImagePNGRepresentation(_pickedImg) == nil)

{

imageData = UIImageJPEGRepresentation(_pickedImg, 1);

}

else

{

imageData = UIImagePNGRepresentation(_pickedImg);

}

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

formatter.dateFormat                = @"yyyyMMddHHmmss";

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

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

//上传的参数(上传图片,以文件流的格式)

[formData appendPartWithFileData:imageData

name:@"file"

fileName:fileName

mimeType:@"image/jpeg"];

}

progress:^(NSProgress *_Nonnull uploadProgress)

{

//打印下上传进度

}

success:^(NSURLSessionDataTask *_Nonnull task, id _Nullable responseObject)

{

//上传成功

}

failure:^(NSURLSessionDataTask *_Nullable task, NSError * _Nonnull error)

{

//上传失败

NSError         *code   = (NSError *)error;

UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"图片上传出错" message:[NSString stringWithFormat:@"%@",code.localizedDescription] delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil];

[alert show];

}];

使用AFNetWorking上传图片的更多相关文章

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

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

  2. AFNetworking 3.0 源码解读(三)之 AFURLRequestSerialization

    这篇就讲到了跟请求相关的类了 关于AFNetworking 3.0 源码解读 的文章篇幅都会很长,因为不仅仅要把代码进行详细的的解释,还会大概讲解和代码相关的知识点. 上半篇: URI编码的知识 关于 ...

  3. iOS-AFNetworking-上传图片

    一.AFNetworking上传图片 /** 需要Demo,可留言 */ 1.利用AFnetworking上传图片. 2.注意将UIImage类型转化为NSData类型,传给后台. 二.Demo // ...

  4. FTP文传协议的应用

    我开发的项目中一直用到都是AFNetworking上传图片的方法,最近老大说要用FTP上传,网上的资料很少,毕竟这种上传方式现在用的不多了,于是花了一天时间学习了FTP文件传输协议.下面是我的个人理解 ...

  5. AFNetWorking POST Multi-Part Request 上传图片

    这些天来,做图片上传的时候,我遇到一个问题.对我来说,这只是一个附加的图片将请求超时,这里是代码: AFHTTPRequestOperationManager *manager = [AFHTTPRe ...

  6. AFNetworking实现表单(multipart)形式上传图片

    最近遇到个问题,就是上传图片到服务器,后台说用表单形式... 由于没弄过这种上传,所以搜了大堆资料,但也没解决问题. 最后通过请教一位大神才得以解决这个简单的问题... 现在将此方法做个笔记... & ...

  7. iOS 原生HTTP POST请求上传图片

    今天项目里做一个上传图片等个人信息的时候,使用了第三方AFNetworking - (AFHTTPRequestOperation *)POST:(NSString *)URLString param ...

  8. 库AFNetworking的使用

    库AFNetworking的使用 1.GET请求(html,json,xml) #pragma mark -GET请求 -(void)testGetRequset{ NSString *urlStri ...

  9. AFNetworking的封装

    AFNetworking的封装 特点 1.将AFNetworking 3.0封装.能够很好享受苹果开发中的面向对象开发思想 . 2.其中也提供几种方法,来请求数据.包括:GET请求/POST请求/Up ...

随机推荐

  1. MQTT开发笔记之《安全传输-自问自答》

    Mosquito使用SSL/TLS进行安全通信时的使用方法:http://www.it165.net/pro/html/201404/12615.htmljava版mosquitto客户端使用SSL功 ...

  2. new bird in github

    首次使用先要建立本地github信息: git config - -global user.name  newbird git config - -global user.email   newbir ...

  3. AJAX学习笔记

    AJAX不是一种编程语言,AJAX是一种实现网页异步加载的技术,即不刷新网页也能部分的更新网页的内容.如:提交表单信息,通过ajax可以不刷新页面来使得人们明白如何正确的填写信息,判断填写信息的错误或 ...

  4. mybatis : trim标签, “等于==”经验, CDATA标签 ,模糊查询CONCAT,LIKE

    一.My Batis trim标签有点类似于replace效果. trim 属性, prefix:前缀覆盖并增加其内容 suffix:后缀覆盖并增加其内容 prefixOverrides:前缀判断的条 ...

  5. vi 的使用

    Vi 分三种模式:一般模式,编辑模式,和命令模式 一般模式: 光标移动,搜索与替换,删除,复制,粘贴 编辑模式:插入或者替换文本 命令模式:读取.保存文件 一般模式 光标移动: h(左), j(下), ...

  6. Android源代码查看途径

    作为一个android coder,多阅读android源码对提高android开发水平是很有帮助的,那么我们可以通过哪些途径查看android源码呢 1.如果你能够FQ的话可以去android官网查 ...

  7. Python中的if __name__='__main__'语句的作用

    笔者在自学Python的过程中,对于if __name__='__main__'的用法感到很困惑,在think Python一书中原作者的源代码是这么解释if __name__='__main__'语 ...

  8. WPF程序将DLL嵌入到EXE的两种方法

    WPF程序将DLL嵌入到EXE的两种方法 这一篇可以看作是<Visual Studio 版本转换工具WPF版开源了>的续,关于<Visual Studio 版本转换工具WPF版开源了 ...

  9. maven实战(03)_依赖

    (一) 依赖配置声明 包含以下的一些元素: <project> ... <dependencies> <dependency> <groupId>... ...

  10. xampp 下安装mysql-python

    pip install mysql-python修改路径PATH="$PATH":(/mysql/bin 路径)brew install mysql-connector-c