我尝试使用AFNetworking框架将图像数据发布到我的Web服务。当我使用模拟器运行我的应用程序时一切都很好但是当我在iPad上运行应用程序时,Web服务不会收到任何图像数据($ _FILES返回nil)。这可能是AFNetworking中的一个错误吗?
客户代码:
- (NSMutableURLRequest *)POSTRequestForImage:(NSString *)imagePath ForPrepfile:(NSString *)objectId
{
NSData *imageData = UIImagePNGRepresentation([UIImage imageWithContentsOfFile:imagePath]);
NSURL *url = [[NSURL alloc] initFileURLWithPath:[imagePath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
if (imageData == nil) {
NSLog(@"no data");
}
NSString *imageName = [imagePath lastPathComponent];
NSDictionary *parameters = [NSDictionary dictionaryWithObjectsAndKeys:imageName, @"filename", objectId, @"objectId", nil];
NSLog(@"imagename: %@", imageName);
NSMutableURLRequest *request = [self multipartFormRequestWithMethod:@"POST" path:@"images" parameters:parameters constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) {
[formData appendPartWithFileData:imageData name:@"image" fileName:imageName mimeType:@"image/png"];
}];
NSLog(@"picture request fileurl: %@", url);
return request;
}
使用SLIM框架的PHP脚本:
$app->post('/images', function () use ($app) {
$pa = new PrepAppDB();
$out = $app->request()->post();
// file upload
$fileName = $_FILES['image']['name'];
$tmpName = $_FILES['image']['tmp_name'];
$fileSize = $_FILES['image']['size'];
$fileType = $_FILES['image']['type'];
if(move_uploaded_file($tmpName, $fileName))
{
$result = $pa->updateRow('image', $out);
header("Content-Type: application/json");
echo json_encode($result);
} else {
sendResponse(400, 'fail');
}
});
我感谢任何帮助!
------------------------- EDIT --------------------- ----------
我测试了$_FILES
是否为空,但事实并非如此。通过iPad发送图片时,我通过“$ _FILES ['image'] ['name']”获取文件名,但其他变量为空。
我还在appendPartWithFileData:
测试了我追加到我的请求的图像数据,看起来也没问题。
我真的没有线索......没人能帮忙吗?谢谢!
答案 0 :(得分:1)
愚蠢的我......问题是iPad上的图像尺寸太大,所以服务器不接受它; - )