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:
が、問題ないようです。全然わからない…誰か助けてくれませんか?ありがとう!