使用 Afnetworking 发布没有图像的数据

Posted

技术标签:

【中文标题】使用 Afnetworking 发布没有图像的数据【英文标题】:Post data without image using Afnetworking 【发布时间】:2014-09-21 04:58:55 【问题描述】:

我想上传用户信息到服务器。它包含用户头像和用户配置文件数据。现在的问题是用户不总是上传头像,所以如果用户不上传,我想过滤图像,所以有人可以帮我吗?

现在我正在使用此代码上传图片,它工作正常,但即使用户不上传图片,我也想上传

AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:[NSURL URLWithString:BASE_URL]];
        NSData *imageData = UIImagePNGRepresentation(image);
    [manager POST:url parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) 
        [formData appendPartWithFileData:imageData name:@"file" fileName:@"image.png" mimeType:@"image/png"];
     success:^(AFHTTPRequestOperation *operation, id responseObject) 
        NSLog(@"Success %@", responseObject);
        [Util showAlertDialog: NSLocalizedString(@"Success", nil):NSLocalizedString(@"Upload Successful", nil)];
     failure:^(AFHTTPRequestOperation *operation, NSError *error) 
        NSLog(@"Failure %@, %@", error, operation.responseString);
        [ Util showAlertDialog: NSLocalizedString(@"Failed", nil):NSLocalizedString(@"Upload Failed, Please try again", nil)];
    ];

【问题讨论】:

【参考方案1】:

我自己通过发送空的 NSData 解决了这个问题

AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:[NSURL URLWithString:BASE_URL]];
        NSData *imageData;
        CGImageRef cgref = [image CGImage];
        CIImage *cim = [image CIImage];

        if (cim == nil && cgref == NULL)
        
            imageData = [[NSData alloc] init];
        else
            imageData = UIImagePNGRepresentation(image);
        

        [manager POST:url parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) 
        [formData appendPartWithFileData:imageData name:@"file" fileName:@"image.png" mimeType:@"image/png"];
     success:^(AFHTTPRequestOperation *operation, id responseObject) 
        NSLog(@"Success %@", responseObject);
        [MBProgressHUD hideHUDForView:view animated:YES];
        [Util showAlertDialog: NSLocalizedString(@"Success", nil):NSLocalizedString(@"Upload Successful", nil)];
     failure:^(AFHTTPRequestOperation *operation, NSError *error) 
        NSLog(@"Failure %@, %@", error, operation.responseString);
        [MBProgressHUD hideHUDForView:view animated:YES];
        [ Util showAlertDialog: NSLocalizedString(@"Failed", nil):NSLocalizedString(@"Upload Failed, Please try again", nil)];
    ];

【讨论】:

以上是关于使用 Afnetworking 发布没有图像的数据的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法先加载文本字符串,然后使用 AFNetworking 加载图像?

带有数据和图像的 AFNetworking 3.x 发布请求

使用 AFNetworking 发送图像和其他参数

如何直接从 iPad 应用程序使用 AFNetworking 上传图像

使用 AFNetworking3 目标 c 显示来自 json 数据的图像

使用 AFNetworking 和 PHP 从照片库上传选定的图像