美文网首页
7.AFNetworking实现图片上传

7.AFNetworking实现图片上传

作者: 峰子1994 | 来源:发表于2017-10-28 10:19 被阅读28次

前言

1.在iOS开发的工作我们经常使用的图片上传这个功能,前面我们提到了使用NSURLSessionUploadTask+NSURLSesionDelegate去实现图片的上传功能,
感觉那个拼接的文件的路径太麻烦了,现在感觉使用AFNetworking封装好的
上传图片的功能挺好的!!

1.图片上传的代码:

 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/plain", @"multipart/form-data", @"application/json", @"text/html", @"image/jpeg", @"image/png", @"application/octet-stream", @"text/json", nil];
    [manager POST:@"nurl" parameters:@"paramter" constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {
       // formData: 专门用于拼接需要上传的数据,在此位置生成一个要上传的数据体
       //这里可以用作多个图片上传加一个数组就Ok
        // 在网络开发中,上传文件时,是文件不允许被覆盖,文件重名
        // 要解决此问题,
        // 可以在上传时使用当前的系统事件作为文件名
        NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
        formatter.dateFormat = @"yyyyMMddHHmmss";
        NSString *str = [formatter stringFromDate:[NSDate date]];
        NSString *fileName = [NSString stringWithFormat:@"%@.jpg",str];
        UIImage *phone = [[UIImage alloc]init];
        //压缩下
        NSData *imageData =UIImageJPEGRepresentation(phone, 0.5);
        /*
         *该方法的参数
         1. appendPartWithFileData:要上传的照片[二进制流]
         2. name:对应网站上[upload.php中]处理文件的字段(比如upload)
         3. fileName:要保存在服务器上的文件名
         4. mimeType:上传的文件的类型
         */
        [formData appendPartWithFileData:imageData name:@"upload" fileName:fileName mimeType:@"image/jpeg"];
    } progress:^(NSProgress * _Nonnull uploadProgress) {
        NSLog(@"上传的进度了");
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        NSLog(@"success");
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"failure");
    }];

相关文章

网友评论

      本文标题:7.AFNetworking实现图片上传

      本文链接:https://www.haomeiwen.com/subject/aqbjpxtx.html