我尝试使用 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');
}
});
我很感激任何帮助!
- - - - - - - - - - - - -编辑 - - - - - - - - - - - - --------
我测试了是否$_FILES
为空,但事实并非如此。通过 iPad 发送图片时,我通过“$_FILES['image']['name']”获取文件名,但其他变量为空。我还测试了附加到我的请求中的图像数据,appendPartWithFileData:
它似乎也可以。我真的没有头绪……没人能帮忙吗?谢谢!