1

Monotouchを使用して、 で実行されているアプリケーションiPadからPHPサーバー (Windows)にバイナリ ファイル (写真) を同期しようとしていますWebclient。ファイルは送受信されていますが、サーバー上でバイナリ ファイルが破損しているようで、表示できません。

クライアント側のコードは次のとおりです。

static void UploadPhotos()
{
    WebClient client = new WebClient ();
    client.Headers.Add("Content-Type","application/octet-stream");
    string sUri = GetUri();
    client.UploadFile (sUri, "POST", "images/test.png");
}

サーバー上のPHPコードは次のとおりです。

<?php
$uploadDir = "C:\\uploaddir\\";
foreach ($_FILES as $file_name => $file_array) {
    $uploadFile = $uploadDir . $file_array['name'];
    move_uploaded_file($file_array['tmp_name'], $uploadFile);
}
?>

アップロードでバイナリデータが破損する理由とその修正方法を知っている人はいますか?

アップデート:

本当に奇妙です。私が抱えている問題はpng画像のみに影響しているようです。jpeg画像が正しく表示されるようです。画像は、サーバー上の Windows エクスプローラーで画像のjpeg寸法を正しく表示し、画像をプレビューできjpegます。テストしたjpeg画像は約 90 KB でした。ただし、pngファイルは正しく表示されません。Windows エクスプローラーでは、pngファイルに画像のサイズが表示されず、プレビューできません。pngファイルサイズはサーバー上で大きくなります。したがって、たとえば、次のpng画像を使用します。

http://tuxpaint.org/stamps/stamps/animals/birds/cartoon/tux.png

初期ファイルは 40.2 KB (41236 バイト) です。転送後のサーバー上のファイル サイズは 45.3 KB (46468 バイト) です。誰でもこれがどのように起こるか考えていますか?

4

2 に答える 2

2

Content-Type を「application/octet-stream」に設定してみてください。バイナリ データではより一般的であり、サーバーがバイナリ/オクテット ストリームを認識しない可能性があると思います。

于 2012-08-03T15:59:40.100 に答える