そのため、HTTP POSTを使用してインターネット経由で画像を送信し、サーバー上のphpスクリプトに送信しています。その画像を撮って保存できるようにしたいと思います。私はこれをテキストでうまくやっていますが、画像などの他のコンテンツに関しては、変数が見つからないと言ってエラーが発生し、試してみるfile_get_contents
とそれも好きではありません。iPhoneからも画像を送信しているので、POSTリクエストは次のようになります。
NSMutableData *postBody = [NSMutableData data];
[postBody appendData:[[NSString stringWithFormat:@"--%@\r\n", stringBoundary] dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[@"Content-Disposition: form-data; name=\"media\"; filename=\"dummy.jpg\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[@"Content-Type: image/jpeg\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[@"Content-Transfer-Encoding: binary\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:imageData];
[postBody appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[[NSString stringWithFormat:@"--%@--\r\n", stringBoundary] dataUsingEncoding:NSUTF8StringEncoding]];
[postRequest setHTTPBody:postBody];
残りのリクエストは書かれていますが、全部投稿したいとは思いません。
しかし、それにもかかわらず、それは私がリクエストを送信する方法であり、phpサーバー側では、
<?php
echo "Some Message";
$nameValue = $_POST['name'];
echo "<br/>";
echo $nameValue;
$otherValue = $_POST['other'];
echo "<br/>";
echo $otherValue;
file_get_contents('dummy.jpg');
// or I tried this
$imageData = $_POST['media'];
?>
画像がつかめないようです。画像を取得する両方の試みが失敗し、理由はわかりません。助言がありますか?
編集:
printステートメントを追加して、print_r($_FILES)
何が得られるかを確認すると、次のようになりました。
(
[media] => Array
(
[name] => dummy.jpg
[type] =>
[tmp_name] =>
[error] => 1
[size] => 0
)
)
したがって、少なくともその名前の画像を取得しているように見えますが、何らかの理由で実際のデータを取得しておらず、エラーが発生しています。データを送信しておらず、PHPサーバーでエラーが発生している場合、これはおそらくiPhone側にあると思います。よくわかりませんが、誰かがこのようなことを経験したことがありますか?
編集2:
私はついにすべてが機能するようになりました。すべてが適切にフォーマットされていることがわかりました。ファイル画像のアップロード制限の問題が発生していました。私が送信した画像は約8MBで、サーバーがそれを処理できないようです。そのため、jpegの品質を下げるだけで、この問題は解決しました。次に、いくつかの権限の問題もありましたが、少しでもsudo chmod
修正できないものはありませんでした。あなたの提案と助けをみんなに感謝します、私は私が複数の答えを受け入れることができたらいいのにと思います!