此方法是先通过上传单张图片然后判断成功信息接着上传下面的图片
直接上代码:
#import <Foundation/Foundation.h>
@interface UpLoadImageHelper : NSObject
//block定义
@property (copy, nonatomic) void (^singleSuccessBlock)(id success);
@property (copy, nonatomic) void (^singleFailureBlock)(BOOL NotReachable,NSString *descript);
+ (instancetype)sharedInstance;
@end
#import "UpLoadImageHelper.h"
@implementation UpLoadImageHelper
//将此类写成单例,方便调用
+ (instancetype)sharedInstance{
static UpLoadImageHelper *sharedInstance=nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken,^{
sharedInstance=[[UpLoadImageHelper alloc]init];
});
return sharedInstance;
}
@end
//网络请求类:
#import <Foundation/Foundation.h>
@interface HttpHelper : NSObject
/**
* 上传文件接口
*
* @param fileData 数据
* @param name 名称
* @param fileName 文件名称
* @param mimeType 文件类型
*/
+(void)uploadFile:(NSData *)fileData name:(NSString *)name fileName:(NSString *)fileName mimeType:(NSString *)mimeType Success:(void (^)(id sucess))sucess fail:(void (^)(BOOL NotReachable,NSString *descript))fail ;
/**
* 上传多张图片接口
*
* @param array 数据
*/
+(void)uploadManyFile:(NSArray *)array Success:(void (^)(NSArray *success))sucess fail:(void (^)(BOOL NotReachable,NSString *descript))fail ;
#import "HttpHelper.h"
#import "AFNetworking.h"
#import "UpLoadImageHelper.h"
@implementation HttpHelper
/**
* 上传图片接口
*
*/
+(void)uploadFile:(NSData *)fileData name:(NSString *)name fileName:(NSString *)fileName mimeType:(NSString *)mimeType Success:(void (^)(id success))sucess fail:(void (^)(BOOL, NSString *))fail {
NSString *urlString = @"";
NSString *urlStr = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
AFHTTPRequestSerializer *serializer = [AFHTTPRequestSerializer serializer];
NSMutableURLRequest *request = [serializer multipartFormRequestWithMethod:@"PUT" URLString:urlStr parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
if (fileData!=nil) {
[formData appendPartWithFileData :fileData name:name fileName:fileName mimeType:mimeType];
}
} error:nil];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
NSURLSessionUploadTask *uploadTask = [manager uploadTaskWithStreamedRequest:request progress:^(NSProgress *uploadProgress) {
} completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {
if (!error) {
NSDictionary *responseString = (NSDictionary *)responseObject;
int code=[[responseString objectForKey:@"status"] intValue];
NSString *message=[responseString objectForKey:@"message"];
if (code==0) {
sucess(responseObject);
}
else if(code==501)
{
} else if(code==502)
{
fail(NO,message);
}
else{
fail(NO,message);
}
} else {
fail(NO, @"服务器返回数据为空");
}
}];
[uploadTask resume];
}
/**
* 上传多张图片接口
*
* @param array 数据
*/
+(void)uploadManyFile:(NSArray *)array Success:(void (^)(NSArray *success))sucess fail:(void (^)(BOOL NotReachable,NSString *descript))fail {
NSMutableArray *arrayUrl=[[NSMutableArray alloc]init];
NSString *miniType=@"image/jpg";
__block NSUInteger currentIndex=0;
UpLoadImageHelper *uploadHelper=[UpLoadImageHelper sharedInstance];
__weak UpLoadImageHelper *weakhelper=uploadHelper;
weakhelper.singleFailureBlock=^(BOOL NotReachable,NSString *descript){
fail(NO,@"服务器返回数据为空");
};
weakhelper.singleSuccessBlock=^(id success){
//这里返回的数据需要解析哈一般的data里面的数据
NSDictionary *dicdata=(NSDictionary *)success;
NSLog(@"%@", success);
NSArray *temparray=dicdata[@"data"][@"img"][@"album"];
[arrayUrl addObject:temparray[0]];
currentIndex++;
if ([array count]==[arrayUrl count]) {
sucess(arrayUrl);
return ;
}else{
UIImage *imageone=array[currentIndex];
NSData *imageData= UIImageJPEGRepresentation(imageone, 0.3);
//注意:imagename中的@"image"参数,这个参数是后台给的需要上传的图片的类型
NSString *imagename=[NSString stringWithFormat:@"image"];
NSString *filename=[NSString stringWithFormat:@"image%ld.jpg",currentIndex];
[HttpHelper uploadFile:imageData name:imagename fileName:filename mimeType:miniType Success:weakhelper.singleSuccessBlock fail:weakhelper.singleFailureBlock];
}
};
UIImage *imageone=array[0];
NSData *dataObj = UIImageJPEGRepresentation(imageone, 0.3);
[HttpHelper uploadFile:dataObj name:@"image" fileName:@"image.jpg" mimeType:miniType Success:weakhelper.singleSuccessBlock fail:weakhelper.singleFailureBlock];
}
//所需上传图片数组的类:
#import "ShopPicturesController.h"
#import "UIImage+ZLPhotoLib.h"
#import "ZLPhoto.h"
#import "UIButton+WebCache.h"
@interface ShopPicturesController ()<ZLPhotoPickerBrowserViewControllerDelegate>
@property (nonatomic, strong) NSMutableArray *pickPhotos;
@end
@implementation ShopPicturesController
//上传图片数组的方法
- (void)commitPicturesAction:(UIBarButtonItem *)sender {
NSMutableArray *imageDataArr = [[NSMutableArray alloc] init];
for (ZLPhotoPickerBrowserPhoto *photo in self.pickPhotos) {
[imageDataArr addObject:[photo.asset thumbImage]];
}
[HttpHelper uploadManyFile:imageDataArr Success:^(NSArray *success) {
NSLog(@"%@", success);
} fail:^(BOOL NotReachable, NSString *descript) {
}];
}
@end