AFNetworking3.0上传图片

2018-01-23  本文已影响0人  乖乖Mor

看到简书某大神的上传方法,记录一下,以防忘记

NSMutableDictionary *params = [NSMutableDictionary dictionary];    params[@"sensitive"]=false;

  AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

    manager.requestSerializer.timeoutInterval = 20;    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/plain", @"multipart/form-data", @"application/json", @"text/html", @"image/jpeg", @"image/png", @"image/jpg", @"application/octet-stream", @"text/json", nil];

   // 在parameters里存放照片以外的对象    [managerPOST:@"http://atell.awei.org/images/upload/binary" parameters:params constructingBodyWithBlock:^(id  _Nonnull formData) {

        // formData: 专门用于拼接需要上传的数据,在此位置生成一个要上传的数据体

       // 这里的photoArray是存放图片的数组

       for(int i =0; i < self.photoArray.count; i++)         

{            UIImage*image =self.photoArray[i];

            NSData*imageData =UIImageJPEGRepresentation(image,0.5);

            // 在网络开发中,上传文件时,是文件不允许被覆盖,文件重名

            // 要解决此问题,

            // 可以在上传时使用当前的系统时间作为文件名

            NSDateFormatter *formatter = [[NSDateFormatter alloc] init];

            // 设置时间格式

            [formattersetDateFormat:@"yyyyMMddHHmmss"];

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

            NSString*fileName = [NSString  stringWithFormat:@"%@-%d.jpg", dateString,i];

            DLog(@"-----7777-----\n%@",fileName );

            /*

             *该方法的参数

             1. appendPartWithFileData:要上传的照片[二进制流]

             2. name:对应网站上处理文件的字段-----此字段非常重要,不然会上传失败,应与后台约定好

             3. fileName:要保存在服务器上的文件名-----一般无所谓

             4. mimeType:上传的文件的类型*/

           [formDataappendPartWithFileData:imageDataname:[NSStringstringWithFormat:@"file"]fileName:fileNamemimeType:@"image/jpg"];

        }

   }progress:^(NSProgress*_NonnulluploadProgress) {

        DLog(@"---上传进度--- %@",uploadProgress);

    }success:^(NSURLSessionDataTask*_Nonnulltask,id  _NullableresponseObject) {

            DLog(@"```上传成功111111-----");

    }failure:^(NSURLSessionDataTask*_Nullabletask,NSError*_Nonnullerror) {

       DLog(@"xxx上传失败xxx %@", error);

   }];

上一篇下一篇

猜你喜欢

热点阅读