1

そのため、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修正できないものはありませんでした。あなたの提案と助けをみんなに感謝します、私は私が複数の答えを受け入れることができたらいいのにと思います!

4

3 に答える 3

1

エラーコード「1」は、アップロードしようとした画像が大きすぎることを意味します。 http://php.net/manual/en/features.file-upload.errors.php

php.iniのupload_max_filesize設定を確認してください。

$ _FILES ['media'] ['name']を続行しようとしているのを見ましたが、実際にアップロードされたファイルは、$ _ FILES['media']['tmp_name']で指定されたパスで利用できます。

アップロードを正しく処理するために、php-docuを参照してください:http: //php.net/manual/en/features.file-upload.post-method.php

于 2012-08-09T14:14:53.963 に答える
0

PHP 側の $_FILES 配列をチェックして、そこに画像があるかどうかを確認してください...

行うprint_r($_FILES);

于 2012-08-08T20:47:51.630 に答える
0

最初に (1) の結果を出力するfile_get_contents必要があります。次に、標準の HTML ではなく画像を提供していることをブラウザーに伝える必要があります (2)。

echo file_get_contents('dummy.jpg'); // 1
header("Content-Type: image/jpg");   // 2

header関数の表面をすくい取っただけです。実際のケースでは、さらにいくつかのヘッダーを追加する必要があります。チェックアウト:

于 2012-08-08T19:26:33.150 に答える