1

サーバーサイドスクリプトでは、次のPHPコードを使用して画像をエンコードしています。

    $handle = fopen($imageSrc,'r');
    $file_content = fread($handle,filesize($imageSrc));
    fclose($handle);
    $encoded = base64_encode($file_content);

    echo $encoded;

Webサービスを介してファイルを読み取ると、長さが9309バイトになります。これは、base64でエンコードされたデータには無効な長さです。データを調べてみると、最後のバイトの値は10(LF)であることがわかりました。現在、データをデコードする前に、Webサービスの最後のバイトを切り取っています。LF文字が送信されないようにするクリーンな方法はありますか?

4

1 に答える 1

1

何が原因なのかはわかりませんが、過去に同様の問題をデバッグしたことがありますが、出力されるecho原因の下に何かがあると思い\nます。

これをテストするには、 のdie();直後に a を置きechoます。私の理論が正しければ、 をそのままにしておくかdie();、(より良い) を実行フローで徐々に下に移動させて、 を出力させる原因を見つけることが\nできます。

于 2012-05-07T20:10:13.537 に答える