多图上传方法之二

此方法是先通过上传单张图片然后判断成功信息接着上传下面的图片

直接上代码:

#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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值