php スクリプトに画像をアップロードしようとすると、ASIHTTPRequest ライブラリを使用すると奇妙な問題が発生します。ASIHTTPRequest を正しく実装しました。php スクリプトは iphone シミュレーターから POST データを受信しますが、テスト セットの一部の画像に対してのみです。POSTを通過しない画像は他にもあります。
すべての画像は Facebook から取得したもので、jpg または png 形式です。両方のタイプの画像でコードをテストしましたが、iPhone アプリケーションで PNGRepresentation メソッドを使用して画像を NSData に変換するため、問題にはなりません。画像のサイズもテストしましたが、これは問題ではありません (600x600 から 1200x1200 の範囲)。
ASIHTTPRequest を壊す画像は私には特別なものではないように思われ、バグを特定するのに苦労しています。以下は私の実装の一部です:
iPhone の実装:
[RegisterRequest setData:profilePicturePNG withFileName:filename andContentType:@"image/png" forKey:@"profilePicture"];
[RegisterRequest addRequestHeader:@"Content-Type" value:@"image/png"];
[RegisterRequest setDelegate:self];
[RegisterRequest startAsynchronous];
PHP の実装:
echo "Upload: " . $_FILES["profilePicture"]["name"] . "<br>";
echo "Type: " . $_FILES["profilePicture"]["type"] . "<br>";
echo "Size: " . ($_FILES["profilePicture"]["size"] / 1024) . " kB<br>";
echo "Temp file: " . $_FILES["profilePicture"]["tmp_name"] . "<br>";
このテストでは、PHP 実装がファイル プロパティをエコーする必要があります。前述したように、ほとんどの画像でエコーが返ってきます。ただし、名前とタイプが通過せず、サイズが 0kb と報告されるイメージがいくつかあります。
助言がありますか?よろしくお願いします!