用AFNetworking上传图片

其实我弄了好久,也没弄好多张一起上传,只好弄单张上传,如果你看到这篇文章对您有帮助的话欢迎您及时完善我的信息,也让我学习一下多张上传怎么弄,谢谢

//首先实例化一个AFHTTPRequestOperationManager操作对象

AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:[NSURL URLWithString:@"上传图片的接口"]];

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);

NSString *documentsDirectory = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"logo1.jpg"];

NSData *logoJpg = [NSData dataWithContentsOfFile:documentsDirectory];

UIImage * image = [UIImage imageWithData:logoJpg];

上面是从手机路径中取图片

//    NSURL *filePath = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"avatar.jpg" ofType:nil]];

NSData *imageData = UIImageJPEGRepresentation(image, 1.0);//压缩

 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]
          */

if (imageData) {

NSDictionary * dic1 = @{};//接口要求的参数

NSMutableURLRequest *request = [manager.requestSerializer

multipartFormRequestWithMethod:@"POST"

URLString:@"http://yapi.chelehuo.net/upload"

parameters:dic1

constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {

[formData appendPartWithFileData:imageData

name:@"logo1"

fileName:@"logo1.jpg"

mimeType:@"image/jpeg"];

}

error:nil];

AFHTTPRequestOperation *operation = [manager HTTPRequestOperationWithRequest:request success:^(AFHTTPRequestOperation *operation, id responseObject) {

NSLog(@"operation1:%@", responseObject);

弄你想要的参数

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

NSLog(@"failure. upload....");

}];

[manager.operationQueue addOperation:operation];

//可以查看上传的进度

[operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {

NSLog(@"百分比:%f",totalBytesWritten*1.0/totalBytesExpectedToWrite);

}];

}

多张图片上传的方法

方法一:

NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer]multipartFormRequestWithMethod:@"POST" URLString:url parameters:url参数 constructingBodyWithBlock:^(id<AFMultipartFormData>
formData) {

for (int i = 0; i<arrayImage.count; i++) {

UIImage *uploadImage = arrayImage[i];

[formData appendPartWithFileData:UIImagePNGRepresentation(uploadImage)name:[NSString stringWithFormat:@"参数%d",i+1] fileName:@"test.jpg"mimeType:@"image/jpg"];

}

} error:nil];

AFHTTPRequestOperation *opration = [[AFHTTPRequestOperationalloc]initWithRequest:request];

opration.responseSerializer.acceptableContentTypes = [NSSetsetWithObject:@"text/html"];

[opration setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, idresponseObject) {

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

}

这个多张上传我是失败的不知道为啥

这是我在网上看到的几个博客里的例子,可以看看

http://blog.csdn.net/liuwuguigui/article/details/40142739

http://blog.sina.com.cn/s/blog_a776fc650102uyvb.html

http://www.tuicool.com/articles/JFJrue

时间: 2024-10-24 04:57:53

用AFNetworking上传图片的相关文章

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

iOS开发通过AFNetworking上传图片到服务器 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/html", @"image/jpeg", @"im

关于AFNetworking上传图片问题

AFNetworking上传图片 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; [manager POST:@"XXXX" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { NSData *imageData = UIImageJPEGRepresen

iOS开发——项目实战总结&amp;类微信朋友圈发动态功能初步-图片与视频上传

类微信朋友圈发动态功能初步-图片与视频上传 最近在做一个新的项目,涉及到了关于图片和视频上传和显示的功能,研究了一段时间,总结一下. 使用AFNetworking上传图片(可一次上传多张图片,包含不同类型png, jpeg)和视频 1 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 2 3 AFHTTPRequestOperation *operation = [manager P

iOS视频下载遇到的问题(附上AFHTTPRequestOperation下载视频方法)

前言: 最近做即时聊天项目,涉及到视频的上传下载.AFNetworking上传图片和视频(支持多张图片上传) 在视频下载中遇到一些问题,视频下载后无法播放 1 视频下载方法 /** * 下载文件 */ - (void)downloadFileURL:(NSString *)aUrl savePath:(NSString *)aSavePath fileName:(NSString *)aFileName tag:(NSInteger)aTag { NSFileManager *fileManag

AFNetWorking POST Multi-Part Request 上传图片

这些天来,做图片上传的时候,我遇到一个问题.对我来说,这只是一个附加的图片将请求超时,这里是代码: AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"]; NSURL *filePath = [NSURL

AFNetworking之上传图片音乐等文件

AFNetworking可以很方便的上传图片等文件到服务器: 方法如下: 1.导包 , <span style="font-size:14px;">#import "AFNetworking.h" 或者 #import <AFNetworking.h>(如果用cocoapod安装的话)</span> 2.创建一个 manager属性: @property (strong, nonatomic) AFHTTPRequestOpera

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

最近遇到个问题,就是上传图片到服务器,后台说用表单形式... 由于没弄过这种上传,所以搜了大堆资料,但也没解决问题. 最后通过请教一位大神才得以解决这个简单的问题... 现在将此方法做个笔记... <form action="http://xxxxxx?AppId=6&AppKey=409eb153a6ee96e064ba8d883xxxxx&Ac=PhotoUpload&Uid=5" method="post" enctype=&qu

AFNetworking的封装

AFNetworking的封装 特点 1.将AFNetworking 3.0封装.能够很好享受苹果开发中的面向对象开发思想 . 2.其中也提供几种方法,来请求数据.包括:GET请求/POST请求/Upload请求. 3.调用的方法,在下面详细说明 使用方法 1.导入AFNetworking 文件夹 ,UIkit+AFNetworking 文件夹,Networking.h/.m 文件, UploadImageInformationObject.h/.m 文件(前两个是官方AFNetworking

iOS开发之网络请求(基于AFNetworking的再封装)

最近一直很忙也没有什么时间写博客了.放假了休息一下,就写一篇博客来总结一下最近做项目中出现过的问题吧!!! 首先,在项目中我的起到了什么作用,无非就是把美工(UI设计师)给我们的图显示出来,然后再和服务器进行交互. 那个我们和服务器怎么交互呢?最简单的方式就是说话呗,但是我们要跟服务器说话必须通过我们彼此能听的懂的话来交流,也就需要制定很多的协议了(http,tcp,udp等,这个有兴趣的朋友可以了解一下网络协议的东西).但是我平常最常使用的还是http协议. http://www.cnblog