zoukankan      html  css  js  c++  java
  • 使用AFNetworking进行图片上传

    转载自:http://blog.csdn.net/a645258072/article/details/51728806

    项目中,我们经常会用到上传图片的功能,而目前的上传图片分为两种(我只知道两种,哈哈哈),一种是以将图片加密转成字符串的形式,另一种是以文件流的形式进行上传。记得去年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> _NonnullformData) {

            

            NSData *imageData =UIImageJPEGRepresentation(image,1);

            

            NSDateFormatter *formatter = [[NSDateFormatteralloc] init];

            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]];

    }

  • 相关阅读:
    GDC快讯,腾讯CMatrix布局云游戏B端领域
    如何测试小程序? 腾讯智慧零售保障优衣库小程序体验优化
    一分钟读懂兼容报告:测试过程视频复现,问题定位很轻松
    一到秒杀就瘫痪?压测大师保你后台稳健
    how2j-springcloud-摘抄
    问题1
    springcloud---how2java--记录零碎的信息
    how2java-springcloud-demo
    oracle 查两个日期之间数据有多少条
    非官网渠道下单导致的错误
  • 原文地址:https://www.cnblogs.com/CodingMann/p/6210527.html
Copyright © 2011-2022 走看看