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 に答える