无法使用 AFNetworking 3.0 上传图像

Posted

技术标签:

【中文标题】无法使用 AFNetworking 3.0 上传图像【英文标题】:Unable to upload images with AFNetworking 3.0 【发布时间】:2016-06-16 10:03:11 【问题描述】:

我正在尝试使用 AFHTTPSessionManager 上传多个文件(图像),但请求失败,代码=-1011“请求失败:内部服务器错误 (500)”。

这是我的代码。

NSString *urlString = [BaseUrl stringByAppendingString:UploadImages];
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
NSString *apiKey = [[Utility sharedInstance] getObjectForKey:API_KEY];
[manager.requestSerializer setValue:apiKey forHTTPHeaderField:@"Authorization"];

[manager POST:urlString parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData)

    for(int i = 0 ;i < pictures.count; i++)
        UIImage *image = [pictures objectAtIndex:i];
        NSData * imageData = UIImageJPEGRepresentation(image, 0.5);
        [formData appendPartWithFileData:imageData name:[NSString stringWithFormat:@"file%d",i] fileName:[NSString stringWithFormat:@"file%d.jpg",i] mimeType:@"image/jpeg"];
    

progress:nil success:^(NSURLSessionTask *task, id responseObject)
    NSLog(@"Pictures Uploaded");
failure:^(NSURLSessionTask *operation, NSError *error) 
    NSLog(@"Uploading failed %@",[error localizedDescription]);
];

失败:

Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: internal server error (500)" UserInfo=com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0x14803b080>  URL: https://BaseUrl/v1/imgupload   status code: 500, headers 
Connection = close;
"Content-Length" = 0;
"Content-Type" = "text/html";
Date = "Thu, 16 Jun 2016 09:25:43 GMT";
Server = "Apache/2.4.7 (Ubuntu)";
"X-Powered-By" = "php/5.5.9-1ubuntu4.14";
  , NSErrorFailingURLKey=https://BaseUrl/v1/imgupload, com.alamofire.serialization.response.error.data=<>, NSLocalizedDescription=Request failed: internal server error (500)

如果我做错了什么请告诉我。谢谢

【问题讨论】:

由于错误表明它很可能是服务器错误而不是您的代码问题,如果有疑问,请使用邮递员 是的,内部服务器错误 500 是在服务器出现问题时引起的,例如服务器关闭或不可用时 服务器没有关闭。在邮递员中工作正常,但在 AFNetworking 中不行。 我认为它同样的失败告诉我,然后发送 png 图像然后它的成功, 【参考方案1】:

将您的代码更改为我的 for 循环而不是您的 for 循环,

for(int i = 0 ;i < pictures.count; i++)
        UIImage *imag = [pictures objectAtIndex:i];
        NSData * imageData = UIImagePNGRepresentation (imag);
        [formData appendPartWithFileData:imageData name:@"Photo" fileName:@"Image.png" mimeType:@"image/png"];
    

名称,文件名不重要,它存储的图像有id,所以它不重要,它只是给出默认值。

希望对你有帮助

【讨论】:

是的,这很重要。使用 for 循环只会上传一张图片。

以上是关于无法使用 AFNetworking 3.0 上传图像的主要内容,如果未能解决你的问题,请参考以下文章

AFNetworking 3.0 上传图片

使用 AFMultipartFormData AFNetworking 3.0 上传图像

从 imagePickerController AFNetWorking 3.0 上传图像到服务器

当应用程序移动到后台时,AFNetworking 3.0 继续上传

AFNetworking 3.0 后台上传不起作用

iOS-AFNetworking3.0上传大量(1000张)图片到服务器