iOS - 使用AFNetworking进行图片上传

项目中,我们经常会用到上传图片的功能,而目前的上传图片分为两种(我只知道两种,哈哈哈),一种是以将图片加密转成字符串的形式,另一种是以文件流的形式进行上传。记得去年12月份在网上随便找了一下,可能是我太low,找了好久没找到。本来早就想总结一下,可是呢...我吧...懒得看AFNetworking源码,就一直搁置了,今天工作做完了,正好分享一下。

第一种方式:文件流方式进行上传

    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

    //接收类型不一致请替换一致text/html或别的

    manager.responseSerializer.acceptableContentTypes = [NSSetsetWithObjects:@"application/json",

                                                         @"text/html",

                                                         @"image/jpeg",

                                                         @"image/png",

                                                         @"application/octet-stream",

                                                         @"text/json",

                                                         nil];

        

    NSURLSessionDataTask *task = [managerPOST:url parameters:nilconstructingBodyWithBlock:^(id<AFMultipartFormData_Nonnull formData) {

        

        NSData *imageData =UIImageJPEGRepresentation(image,1);

        

        NSDateFormatter *formatter = [[NSDateFormatterallocinit];

        formatter.dateFormat =@"yyyyMMddHHmmss";

        NSString *str = [formatterstringFromDate:[NSDatedate]];

        NSString *fileName = [NSStringstringWithFormat:@"%@.jpg", str];

        

        //上传的参数(上传图片,以文件流的格式)

        [formData appendPartWithFileData:imageData

                                    name:@"file"

                                fileName:fileName

                                mimeType:@"image/jpeg"];

        

    } progress:^(NSProgress *_Nonnull uploadProgress) {    

        //打印下上传进度

    } success:^(NSURLSessionDataTask *_Nonnull task, id _Nullable responseObject) {

        //上传成功

  }  failure:^( NSURLSessionDataTask * _Nullable task,  NSError *  _Nonnull error) {        
         // 上传失败

    }];


第二种方式:将image转成NSData,在进行base64加密,此处代码是借鉴朋友博客中写的,就是一个加密过程,不一定非要这么写,只要将image对象传承NSData类型,然后在进行base64加密就可以了。将此处得到的返回值NSString,作为入参传入请求地址就可以了

+ (NSString *)imageBase64WithDataURL:(UIImage *)image

{

    NSData *imageData =nil;

    NSString *mimeType =nil;

    

    //图片要压缩的比例,此处100根据需求,自行设置

    CGFloat x =100 / image.size.height;

    if (x >1)

    {

        x = 1.0;

    }

    imageData = UIImageJPEGRepresentation(image, x);

    mimeType = @"image/jpeg";

    return [NSStringstringWithFormat:@"data:%@;base64,%@", mimeType,

            [imageData base64EncodedStringWithOptions:0]];

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值