$_FILESから画像を取り出す方法がわからない
iOSアプリを開発しています。
AFNetworkingというライブラリを用いて、phpに画像をPOSTしデータベースに保存したいと思っております。
【Objective-C側】
UIImage *image = [UIImage imageNamed:@"bird.png"];
NSData *imageData = UIImageJPEGRepresentation(image, 1.0);
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager POST:@"http://kokun.sakura.ne.jp/AFNetworkingTest/addImageTest.php" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileData:imageData name:@"image" fileName:@"tmp.png" mimeType:@"image/jpeg"];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Success: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
【php側】
// 画像を受け取る
$uploaddir = 'http://kokun.sakura.ne.jp/AFNetworkingTest';
$uploadfile = $uploaddir.basename($_FILES['image']['name']);
$image = file_get_contents($uploadfile);
// 拡張子を取得
$ext = pathinfo($image, PATHINFO_EXTENSION);
// データベースに追加
$pdo = new PDO('mysql:host=xxx;dbname=xxx', 'xxx', 'xxx');
$stmt = $pdo->prepare('INSERT INTO images VALUES(0, :ext, :img)');
$stmt->bindParam(':ext', $ext);
$stmt->bindParam(':img', $image);
$stmt->execute();
// データベースサーバーからの接続を解除
$pdo=null;
// 画像の情報をJSONを返す
header('Content-type: application/json');
echo json_encode($_FILES);
?>
iOS側で返ってきたJSONを表示すると、以下のようになっておりました。
Success: {
image = {
error = 0;
name = "tmp.png";
size = 13766;
"tmp_name" = "/var/tmp/phpmRuFbC";
type = "image/jpeg";
};
}
このように$_FILESの値はきちんと表示されてます。
おそらくですが、phpにPOSTする所までは成功していているのですが、
$_FILESをうまくあつかってデータベースに接続する部分がまちがっているような気がします。
php初心者で、昨日からいろいろ試していますが解決しない状況です・・・・
詳しい方、ご教示ください。