iOS 使用AFN 进行单图和多图上传

作者: Spykerking | 来源:发表于2015-11-02 14:00 被阅读17403次

    图片上传时必要将图片进行压缩,不然会上传失败

    1.单张图上传

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];    [manager POST:urlString parameters:params constructingBodyWithBlock:^(id_Nonnull formData) {

    //使用日期生成图片名称

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

    formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";

    NSString *fileName = [NSString stringWithFormat:@"%@.png",[formatter stringFromDate:[NSDate date]]];

    [formData appendPartWithFileData:imageData name:@"uploadFile" fileName:fileName mimeType:@"image/png"];

    } success:^(AFHTTPRequestOperation * _Nonnull operation, id  _Nonnull responseObject) {

    //上传图片成功执行回调

    completion(responseObject,nil);

    } failure:^(AFHTTPRequestOperation * _Nonnull operation, NSError * _Nonnull error) {

    //上传图片失败执行回调

    completion(nil,error);

    }];

    2.多图上传

    多图上传和单图上传区别在于文件名称

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];    [manager POST:urlString parameters:params constructingBodyWithBlock:^(id_Nonnull formData) {

    NSInteger imgCount = 0;

    for (NSData *imageData in imageDatas) {

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

    formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss:SSS";

    NSString *fileName = [NSString stringWithFormat:@"%@%@.png",[formatter stringFromDate:[NSDate date]],@(imgCount)];

    [formData appendPartWithFileData:imageData name:[NSString stringWithFormat:@"uploadFile%@",@(imgCount)] fileName:fileName mimeType:@"image/png"];

    imgCount++;

    }

    } success:^(AFHTTPRequestOperation * _Nonnull operation, id  _Nonnull responseObject) {

    completion(responseObject,nil);

    } failure:^(AFHTTPRequestOperation * _Nonnull operation, NSError * _Nonnull error) {

    completion(nil,error);

    }];

    相关文章

      网友评论

      • 云画的跃光:多图上传是同时的吗?
      • 773f0db0e614:多图单张顺序上传怎么弄喃
        流火绯瞳:@LC_ 我之前是这么搞得
        773f0db0e614:@流火绯瞳 socket也可以?af是异步的没办法,我觉得用递归,一张传完再传下一张
        流火绯瞳:@LC_ 我之前是用的will-do循环, 一次请求发送一个post,但是这样不是太好, 有的大神建议用socket,如果用post 除了循环,暂时没有好的方法
      • NateLam:请问
        [formData appendPartWithFileData:imageData name:@"uploadFile" fileName:fileName mimeType:@"image/png"];
        里面的name和filename各应该填什么呢 :broken_heart:
        10c58e1fc958:@NateLam 应该是写反了
        NateLam:@流火绯瞳 我再请教一下多图上传时,楼主写的是@"uploadFile%@",@(imgCount),楼主说name是服务器字段,服务器字段不是固定的吗,拼接后上传过去还能识别吗?
        流火绯瞳:@NateLam name是你服务器接收文件定义的字段,,filename是你上传的文件名称
      • 636ccfc89aac:谢谢分享! 在此想请教下 为什么选用post单张上传图片到服务器 服务器收到了图片 但是AFN回调却显示失败 想了很久不是很明白
      • 98eddccca293:AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
      • 月光下的陈小白:
        AFHTTPRequestOperationManager 现在不让用了,,,怎么写呢
      • 小灬博:这个要是有参数 怎么弄,比方说一个用户名对应一个头像 ,大神求救 急用
        Spykerking:@2ca91432920a 这个是上传给服务器,服务器在返回给你一个URL地址,你拿到这个地址在去绑定用户头像
      • 1seven:你好,回调函数是自己写的吗completion(nil,error);
        1seven:@Spykerking 我把图片缓存在本地,然后获取的时候路径有问题,就是单张图片上传没事,多张就会有错
        Spykerking:@1seven 对的
      • 穿越地平线的渴望__:文件超过多大才需要压缩?
        Spykerking:@人生得意 图片上传最好在200K以内,保证质量清晰图片最小,省流量
      • 小樊:文件名中有冒号是不能保存的,建议使用formatter.dateFormat = @"yyyyMMddHHmmss"; :grin:

      本文标题:iOS 使用AFN 进行单图和多图上传

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