POST上传多张图片

作者: Fisher123 | 来源:发表于2017-06-23 11:16 被阅读164次
    /**
     * 上传带图片的内容,允许多张图片上传(URL)POST *
     *   @param url          网络请求地址
     *   @param images       要上传的图片数组
     *   @param parameter    图片数组对应的参数
     *   @param parameters   其他参数字典
     *   @param ratio        图片的压缩比例(0.0 ~ 1.0之间)
     *   @param succeedBlock 成功的回调
     *   @param failedBlock  失败的回调
     */
    - (void)startMultiPartUploadTaskWithURL:(NSString *)url
                                imagesArray:(NSArray *)images
                                parameterOfimages:(NSString *)parameter
                                parametersDict:(NSDictionary *)parameters
                                compressionRatio:(float)ratio
                                succeedBlock:(void(^)(id operation, id responseObject))succeedBlock
                                failedBlock:(void(^)(id operation, NSError *error))failedBlock {
        
        if (images.count == 0) {
            NSLog(@"上传内容没有包含图片");
            return;
        }
        for (int i = 0; i< images.count; i++) {
            if (![images isKindOfClass:[UIImage class]]) {
                NSLog(@"images中第%d个元素不是UIImage对象",i+1); return;
                }
            }
        _manager = [AFHTTPSessionManager manager];
        [_manager POST:url parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
        int i = 0;
        //根据当前系统时间生成图片名称
        NSDate *date = [NSDate date];
        NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; [formatter setDateFormat:@"yyyyMMdd"];
        NSString *dateStr = [formatter stringFromDate:date];
        for (UIImage *image in images) {
            NSString *fileName = [NSString
            stringWithFormat:@"%@%d.png",dateStr,i];
            NSData *imageData;
            if (ratio > 0.0f && ratio < 1.0f) {
            imageData = UIImageJPEGRepresentation(image, ratio);
                } else {
                    imageData = UIImageJPEGRepresentation(image, 1.0f);
                    }
            [formData appendPartWithFileData:imageData name:parameter
            fileName:fileName mimeType:@"image/jpg/png/jpeg"];
            }
        } progress:^(NSProgress * _Nonnull uploadProgress) { //上传进度
        // NSLog(@"上传进度:%@",uploadProgress);
        } success:^(NSURLSessionDataTask * _Nonnull task, id responseObject){
            succeedBlock(nil,responseObject);
        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
            failedBlock(nil,error);
        }];
    }
    
    

    相关文章

      网友评论

        本文标题:POST上传多张图片

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