封装AFN+图片上传进度在图片上显示

用到AFN框架和DACircularProgress框架

#import "NetRequestTool.h"

@implementation NetRequestTool

/**
 *  网络请求 value,header默认为Bearer,Authorization
 *
 *  @param paramDict    参数
 *  @param image        需要上传的图片
 *  @param name         上传图片的字段
 *  @param token        token
 *  @param value        Header值,填nil默认为Bearer
 *  @param header       headerField,填nil默认为Authorization
 *  @param url          API
 *  @param type         类型
 *  @param successBlock 成功操作
 *  @param errorBlock   失败操作
 */
+ (void)requestWithParamsDict:(NSDictionary*)paramDict image:(UIImage*)image name:(NSString*)name token:(NSString*)token value:(NSString*)value hearerField:(NSString*)header URL:(NSString*)url type:(netRequestType)type successBlock:(successBlock)successBlock anderrorBlock:(errorBlock)errorBlock
{
    AFHTTPRequestOperationManager* mgr = [AFHTTPRequestOperationManager manager];
    if (![token isEqualToString:@""]) {
        value = @"Bearer";
        header = @"Authorization";
        [mgr.requestSerializer setValue:[NSString stringWithFormat:@"%@ %@", value, token] forHTTPHeaderField:header];
    }
    if (type == GET) {
        [mgr GET:url parameters:paramDict success:^(AFHTTPRequestOperation* _Nonnull operation, id _Nonnull responseObject) {
            if (successBlock) {
                successBlock(operation, responseObject);
            }
        }
            failure:^(AFHTTPRequestOperation* _Nonnull operation, NSError* _Nonnull error) {
                if (errorBlock) {
                    errorBlock(operation, error);
                }
            }];
    }

    if (type == POST) {
        [mgr POST:url parameters:paramDict success:^(AFHTTPRequestOperation* _Nonnull operation, id _Nonnull responseObject) {
            if (successBlock) {
                successBlock(operation, responseObject);
            }
        }
            failure:^(AFHTTPRequestOperation* _Nonnull operation, NSError* _Nonnull error) {
                if (errorBlock) {
                    errorBlock(operation, error);
                }
            }];
    }

    if (type == PUT) {
        [mgr PUT:url parameters:paramDict success:^(AFHTTPRequestOperation* _Nonnull operation, id _Nonnull responseObject) {
            if (successBlock) {
                successBlock(operation, responseObject);
            }
        }
            failure:^(AFHTTPRequestOperation* _Nonnull operation, NSError* _Nonnull error) {
                if (errorBlock) {
                    errorBlock(operation, error);
                }
            }];
    }

    if (type == UPLOADIMAGE) {
        AFHTTPRequestOperation* uploadOperation = [mgr POST:url parameters:paramDict constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
            NSData* imageData = UIImageJPEGRepresentation(image, 0.4);
            NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
            formatter.dateFormat = @"yyyyMMddHHmmss";
            NSString* str = [formatter stringFromDate:[NSDate date]];
            NSString* fileName = [NSString stringWithFormat:@"%@.jpeg", str];
            [formData appendPartWithFileData:imageData name:name fileName:fileName mimeType:@"image/jpeg"];

        }
            success:^(AFHTTPRequestOperation* _Nonnull operation, id _Nonnull responseObject) {
                if (successBlock) {
                    successBlock(operation, responseObject);
                }
            }
            failure:^(AFHTTPRequestOperation* _Nonnull operation, NSError* _Nonnull error) {
                if (errorBlock) {
                    errorBlock(operation, error);
                }
            }];
        [uploadOperation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
            CGFloat progress = ((float)totalBytesWritten) / totalBytesExpectedToWrite;
            [self sharedTool].progressView.progress = progress;
            [self sharedTool].progressView.progressLabel.text = [NSString stringWithFormat:@"%.2f%%", progress * 100];
        }];
    }
}

+ (NetRequestTool*)sharedTool
{
    static NetRequestTool* tool;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        tool = [[NetRequestTool alloc] init];
    });
    return tool;
}

@end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值