ios 上传多张图片总结——IOS网络访问之使用AFNetworking

ios 上传图片文件 或者 视频   

AFHTTPRequestOperationManager


上传图片(多张)参考文献:

http://www.blogjava.net/qileilove/archive/2014/12/11/421323.html


下面两个函数是可以用的:

[objc]  view plain copy
  1. [formData appendPartWithFileData:<#(NSData *)#> name:<#(NSString *)#> fileName:<#(NSString *)#> mimeType:<#(NSString *)#>]  
[objc]  view plain copy
  1. [formData appendPartWithFileURL:<#(NSURL *)#> name:<#(NSString *)#> error:<#(NSError *__autoreleasing *)#>]  

[objc]  view plain copy
  1. [formData appendPartWithFileURL:<#(NSURL *)#> name:<#(NSString *)#> fileName:<#(NSString *)#> mimeType:<#(NSString *)#> error:<#(NSError *__autoreleasing *)#>]  

这个函数,我用时失败:

[formData appendPartWithFormData:<#(NSData *)#> name:<#(NSString *)#>]

保存图像:

[objc]  view plain copy
  1. - (void)viewDidLoad   
  2. {  
  3.     [super viewDidLoad];  
  4.   
  5.      // 保存每次添加的图片  
  6.     self.imageDataArray = [NSMutableArray array];  
  7.   
  8.       
  9. }  

[objc]  view plain copy
  1. -(void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary *)info  
  2. {  
  3.     UIImage *originalImage = [info valueForKey:UIImagePickerControllerEditedImage] ;  
  4.       
  5.     // 得到图片的缓存数据  
  6.     NSData * imagedata = UIImageJPEGRepresentation([originalImage imageByScalingAndCroppingForSize:CGSizeMake(originalImage.size.width, originalImage.size.height)], 0.5);  
  7.     static int index = 1;  
  8.     NSString * newImageName = [NSString stringWithFormat:@"%@%zi%@", Image_Name, index, @".jpg"];  
  9.     NSString  *jpgPath = NSHomeDirectory();  
  10.     jpgPath = [jpgPath stringByAppendingPathComponent:@"Documents"];  
  11.     jpgPath = [jpgPath stringByAppendingPathComponent:newImageName];  
  12.     [imagedata writeToFile:jpgPath atomically:YES];  
  13.       
  14.       
  15.     [self.imageDataArray addObject:imagedata];  
  16.       
  17.     index ++ ;  
  18.       
  19.     // 显示当前上传图片  
  20.     [self showUploadImage:imagedata];  
  21.       
  22.     [picker dismissViewControllerAnimated:YES completion:^{  
  23.     }];  
  24. }  

提交单张图片 :

[objc]  view plain copy
  1. // 向服务器提交图片  
  2.     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
  3.     manager.responseSerializer = [AFHTTPResponseSerializer serializer];  
  4.       
  5.     // 显示进度  
  6.     [manager POST:urlstr parameters:[self Params] constructingBodyWithBlock:^(id<AFMultipartFormData> formData)  
  7.     {  
  8.         static int nindex = 1;  
  9.         // 单张图片上传  
  10.         NSString * paramName = [NSString stringWithFormat:@"%@%zi", Image_Name, nindex];  
  11.         NSString * newImageName = [NSString stringWithFormat:@"%@.jpg", paramName];  
  12.         NSString * imagepath = NSHomeDirectory();  
  13.         NSString * path = [imagepath stringByAppendingPathComponent:@"Documents"];  
  14.         NSBundle * Bundle = [NSBundle bundleWithPath:path];  
  15.         NSURL    * fileURL = [Bundle URLForResource:newImageName withExtension:nil];  
  16.         [formData appendPartWithFileURL:fileURL name:paramName error:nil];  
  17.     }  
  18.     success:^(AFHTTPRequestOperation *operation, id responseObject)  
  19.      {  
  20.       
  21.          NSString *result = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];  
  22.          NSLog(@"完成 %@", result);          
  23.      }  
  24.      failure:^(AFHTTPRequestOperation *operation, NSError *error)  
  25.      {  
  26.          NSLog(@"错误 %@", error.localizedDescription);  
  27.      }];  

提交多张图片:

[objc]  view plain copy
  1. // 向服务器提交图片  
  2.     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
  3.     manager.responseSerializer = [AFHTTPResponseSerializer serializer];  
  4.       
  5.       
  6.     // 显示进度  
  7.     [manager POST:urlstr parameters:[self Params] constructingBodyWithBlock:^(id<AFMultipartFormData> formData)  
  8.     {  
  9.         // 上传 多张图片  
  10.         for(NSInteger i = 0; i < self.imageDataArray.count; i++)  
  11.         {  
  12.             NSData * imageData = [self.imageDataArray objectAtIndex: i];  
  13.             // 上传的参数名  
  14.             NSString * Name = [NSString stringWithFormat:@"%@%zi", Image_Name, i+1];  
  15.             // 上传filename  
  16.             NSString * fileName = [NSString stringWithFormat:@"%@.jpg", Name];  
  17.               
  18.             [formData appendPartWithFileData:imageData name:Name fileName:fileName mimeType:@"image/jpeg"];  
  19.         }  
  20.     }  
  21.     success:^(AFHTTPRequestOperation *operation, id responseObject)  
  22.      {  
  23.       
  24.          NSString *result = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];  
  25.          NSLog(@"完成 %@", result);          
  26.      }  
  27.      failure:^(AFHTTPRequestOperation *operation, NSError *error)  
  28.      {  
  29.          NSLog(@"错误 %@", error.localizedDescription);  
  30.      }];  

上传视频或图片:

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. // 向服务器提交图片  
  2.     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
  3.     manager.responseSerializer = [AFHTTPResponseSerializer serializer];  
  4.       
  5.     // 显示进度  
  6.     [manager POST:urlstr parameters:[self Params] constructingBodyWithBlock:^(id<AFMultipartFormData> formData)  
  7.     {  
  8.         if (mediaDatas.count > 0)   
  9.         {  
  10.             NSObject *firstObj = [mediaDatas objectAtIndexSafe:0];  
  11.             if ([firstObj isKindOfClass:[UIImage class]])   
  12.             {// 图片  
  13.                 for(NSInteger i=0; i<mediaDatas.count; i++)   
  14.                 {  
  15.                     UIImage *eachImg = [mediaDatas objectAtIndexSafe:i];  
  16.                     //NSData *eachImgData = UIImagePNGRepresentation(eachImg);  
  17.                     NSData *eachImgData = UIImageJPEGRepresentation(eachImg, 0.5);  
  18.                     [formData appendPartWithFileData:eachImgData name:[NSString stringWithFormat:@"img%d", i+1] fileName:[NSString stringWithFormat:@"img%d.jpg", i+1] mimeType:@"image/jpeg"];  
  19.                 }  
  20.             }else   
  21.             {// 视频  
  22.                 ALAsset *asset = [mediaDatas objectAtIndexSafe:0];  
  23.                 NBLog(@"asset=%@, representation=%@, url=%@", asset, [asset defaultRepresentation], [asset defaultRepresentation].url);  
  24.                 if (asset != nil)   
  25.                 {  
  26.                     NSString *videoPath = [NSDocumentsPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%d.mov", 0]];    // 这里直接强制写一个即可,之前计划是用i++来区分不明视频  
  27.                     NSURL *url = [NSURL fileURLWithPath:videoPath];  
  28.                     NSError *theErro = nil;  
  29.                     BOOL exportResult = [asset exportDataToURL:url error:&theErro];  
  30.                     NBLog(@"exportResult=%@", exportResult?@"YES":@"NO");  
  31.                       
  32.                     NSData *videoData = [NSData dataWithContentsOfURL:url];  
  33.                     [formData appendPartWithFileData:videoData name:@"video1" fileName:@"video1.mov" mimeType:@"video/quicktime"];  
  34.                     NBLog(@"method 2");  
  35.                 }  
  36.             }  
  37.         }  
  38.     }  
  39.     success:^(AFHTTPRequestOperation *operation, id responseObject)  
  40.      {      
  41.          NSString *result = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];  
  42.          NSLog(@"完成 %@", result);          
  43.      }  
  44.      failure:^(AFHTTPRequestOperation *operation, NSError *error)  
  45.      {  
  46.          NSLog(@"错误 %@", error.localizedDescription);  
  47.      }];  

上传视频或图像参照:  http://blog.csdn.net/smking/article/details/38880835
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值