iOS批量上传图片(多图上传)
来源:互联网 发布:人工智能 大数据 编辑:程序博客网 时间:2024/06/05 15:30
#import <Foundation/Foundation.h>@interface PicUpload : NSObject+ (NSString *)postRequestWithURL: (NSString *)url // IN postParems: (NSMutableDictionary *)postParems // IN picFilePath: (NSMutableArray *)picFilePath // IN picFileName: (NSMutableArray *)picFileName ;@end.m文件实现// Copyright (c) 2014年 Clover. All rights reserved.#import "PicUpload.h"#import "SVProgressHUD.h"#import "SBJson.h"#import "Singleton.h"@implementation PicUploadstatic NSString * const FORM_FLE_INPUT = @"file1";+ (NSString *)postRequestWithURL: (NSString *)url postParems: (NSMutableDictionary *)postParems picFilePath: (NSMutableArray *)picFilePath picFileName: (NSMutableArray *)picFileName{ NSString *hyphens = @"--"; NSString *boundary = @"*****"; NSString *end = @"\r\n"; NSMutableData *myRequestData1=[NSMutableData data]; //遍历数组,添加多张图片 for (int i = 0; i < picFilePath.count; i ++) { NSData* data; UIImage *image=[UIImage imageWithContentsOfFile:[picFilePath objectAtIndex:i]]; //判断图片是不是png格式的文件 if (UIImagePNGRepresentation(image)) { //返回为png图像。 data = UIImagePNGRepresentation(image); }else { //返回为JPEG图像。 data = UIImageJPEGRepresentation(image, 1.0); } //所有字段的拼接都不能缺少,要保证格式正确 [myRequestData1 appendData:[hyphens dataUsingEncoding:NSUTF8StringEncoding]]; [myRequestData1 appendData:[boundary dataUsingEncoding:NSUTF8StringEncoding]]; [myRequestData1 appendData:[end dataUsingEncoding:NSUTF8StringEncoding]]; NSMutableString *fileTitle=[[NSMutableString alloc]init]; //要上传的文件名和key,服务器端用file接收 [fileTitle appendFormat:@"Content-Disposition:form-data;name=\"%@\";filename=\"%@\"",[NSString stringWithFormat:@"file%d",i+1],[NSString stringWithFormat:@"image%d.png",i+1]]; [fileTitle appendString:end]; [fileTitle appendString:[NSString stringWithFormat:@"Content-Type:application/octet-stream%@",end]]; [fileTitle appendString:end]; [myRequestData1 appendData:[fileTitle dataUsingEncoding:NSUTF8StringEncoding]]; [myRequestData1 appendData:data]; [myRequestData1 appendData:[end dataUsingEncoding:NSUTF8StringEncoding]]; } [myRequestData1 appendData:[hyphens dataUsingEncoding:NSUTF8StringEncoding]]; [myRequestData1 appendData:[boundary dataUsingEncoding:NSUTF8StringEncoding]]; [myRequestData1 appendData:[hyphens dataUsingEncoding:NSUTF8StringEncoding]]; [myRequestData1 appendData:[end dataUsingEncoding:NSUTF8StringEncoding]]; //参数的集合的所有key的集合 NSArray *keys= [postParems allKeys]; //添加其他参数 for(int i=0;i<[keys count];i++) { NSMutableString *body=[[NSMutableString alloc]init]; [body appendString:hyphens]; [body appendString:boundary]; [body appendString:end]; //得到当前key NSString *key=[keys objectAtIndex:i]; //添加字段名称 [body appendFormat:@"Content-Disposition: form-data; name=\"%@\"",key]; [body appendString:end]; [body appendString:end]; //添加字段的值 [body appendFormat:@"%@",[postParems objectForKey:key]]; [body appendString:end]; [myRequestData1 appendData:[body dataUsingEncoding:NSUTF8StringEncoding]]; NSLog(@"添加字段的值==%@",[postParems objectForKey:key]); } //根据url初始化request NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:20]; //设置HTTPHeader中Content-Type的值 NSString *content=[[NSString alloc]initWithFormat:@"multipart/form-data; boundary=%@",boundary]; //设置HTTPHeader [request setValue:content forHTTPHeaderField:@"Content-Type"]; //设置Content-Length [request setValue:[NSString stringWithFormat:@"%d", [myRequestData1 length]] forHTTPHeaderField:@"Content-Length"]; //设置http body [request setHTTPBody:myRequestData1]; //http method [request setHTTPMethod:@"POST"]; NSHTTPURLResponse *urlResponese = nil; NSError *error = [[NSError alloc]init]; NSData* resultData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponese error:&error]; NSString* result= [[NSString alloc] initWithData:resultData encoding:NSUTF8StringEncoding]; if([urlResponese statusCode] >=200&&[urlResponese statusCode]<300){ NSLog(@"返回结果=====%@",result); SBJsonParser *parser = [[SBJsonParser alloc ] init]; NSDictionary *jsonobj = [parser objectWithString:result]; if (jsonobj == nil || (id)jsonobj == [NSNull null] || [[jsonobj objectForKey:@"flag"] intValue] == 0) { dispatch_async(dispatch_get_main_queue(), ^{ UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"提交失败." delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil]; [alert show]; }); } else { dispatch_async(dispatch_get_main_queue(), ^{ UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"提交成功." delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil]; [Singleton sharedSingleton].shopId = [[jsonobj objectForKey:@"shopId"]stringValue]; [alert show]; }); } return result; } else if (error) { NSLog(@"%@",error); [[NSNotificationCenter defaultCenter]postNotificationName:@"dissmissSVP" object:nil]; UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"提交失败." delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil]; [alert show]; return nil; } else return nil; }@end
在需要上传图片的界面使用如下代码调用该上传类:使用时根据需要进行相应调整就可以。[SVProgressHUD showWithStatus:@"上传中,请稍候..." maskType:SVProgressHUDMaskTypeClear]; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSMutableDictionary * dir=[NSMutableDictionary dictionaryWithCapacity:7]; //像字典添加除图片之外的相关参数 [dir setValue:@"0" forKey:@"longitude"]; [dir setValue:@"0" forKey:@"latitude"]; NSString *url = [NSString stringWithFormat:@"%@ShopManage-addStore",OA_DOMAIN]; NSLog(@"有图片上传");//self.pathArray存储要被上传的图片的路径,self.nameArray存储要被上传的图片的名称 [PicUpload postRequestWithURL:url postParems:dir picFilePath:self.pathArray picFileName:self.nameArray]; });
0 0
- iOS批量上传图片(多图上传)
- iOS批量上传图片(多图上传)
- 多图片批量上传
- php单图上传,多图上传,图片批量上传,图片异步上传Thinkphp整合kindeditor
- ThinkPHP中图片上传(批量上传)
- 上传图片、批量上传图片
- 批量上传多张图片
- ios 批量图片上传服务器优化
- iOS多图片上传
- IOS:多图片上传
- ios多图片上传
- android批量文件上传(android批量图片上传)
- android批量文件上传(android批量图片上传)
- android批量文件上传(android批量图片上传)
- android批量文件上传(android批量图片上传)
- 批量上传图片
- 批量上传不同图片
- 图片批量上传 swfupload
- ListView getItemType() && getItemTypeCount()
- 【Android】android-ndk-r10环境搭建
- BIT2014级软件学院程序设计-22 Treats for the Cows
- CListCtrl种InsertColumn不显示
- 怎么看Android官网,怎么看Google官网?可以通过设置Hosts来解决
- iOS批量上传图片(多图上传)
- 【程序员在法国】如何赢得老外的尊重?
- C# excel文件读取
- 字符串编码转换
- 配置Tomcat使用https协议(配置SSL协议)
- android 从微信分享的网页中启动APP
- unbuntu下安装nodejs express
- Android高级知识—思维导图
- Xcode-快捷键