使用AFNetworking上传图片

如何使用AFNetworking上传单张或多张图片到后台服务器?

阅读 7.6k
1 个回答
    //1.创建一个名为mgr的请求管理者
    AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
    
    //2.上传文字时用到的拼接请求参数(如果只传图片,可不要此段)
    NSMutableDictionary *params = [NSMutableDictionary dictionary];//创建一个名为params的可变字典
    params[@"status"] = self.textView.text;//通过服务器给定的Key上传数据
    
    //3.发送请求
    [mgr POST:@"https://upload.api.weibo.com/2/statuses/upload.json" parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
        //单张图片
        UIImage *image = self.photo;//获得一张Image
        NSData *data = UIImageJPEGRepresentation(image, 1.0);//将UIImage转为NSData,1.0表示不压缩图片质量。
        [formData appendPartWithFileData:data name:@"pic" fileName:@"test.jpg" mimeType:@"image/jpeg"];
        
        /*
        Data: 要上传的二进制数据
        name:保存在服务器上时用的Key值
        fileName:保存在服务器上时用的文件名,注意要加 .jpg或者.png
        mimeType:让服务器知道我上传的是哪种类型的文件
        */
        
        //多张图片
        NSArray *images = self.photos;//获得一组Image
          for(NSInteger i = 0; i < self.images.count; i++)
        {
            // 取出图片
            UIImage *image = [images objectAtIndex:i];
            // 转成二进制
            NSData *imageData = UIImageJPEGRepresentation(image, 1.0);
            // 上传的参数名
            NSString * Name = [NSString stringWithFormat:@"image %ld", i];
            // 上传fileName
            NSString * fileName = [NSString stringWithFormat:@"%@.jpg", Name];
            
            [formData appendPartWithFileData:imageData name:Name fileName:fileName mimeType:@"image/jpeg"];
        }
        
        
        
    } success:^(AFHTTPRequestOperation *operation, id responseObject) {//发送成功会来到这里
        NSLog(@"获取用户名称请求成功(图片)");
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {//发送成功会来到这里
        NSLog(@"获取用户名称请求失败(图片)——%@",error);
 
    }];
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进