1

我尝试使用 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:它似乎也可以。我真的没有头绪……没人能帮忙吗?谢谢!

4

1 回答 1

1

愚蠢的我......问题是iPad上的图像尺寸太大,所以服务器不接受它;-)

于 2013-02-01T14:25:09.083 回答