0

あるサーバーから別のサーバーに画像を転送しようとしています。ZF2のおかげで、それほど簡単ではありません。私がすでに持っているものは以下です。その結果、画像が破損しています。firebug によると、応答コンテンツはありません。コンテンツをストリーミングできecho、見た目も問題ありません (多くのアーティファクトなどは、画像が正しくダウンロードされたことを意味します) では、ストリームにあるコンテンツを画像として返すにはどうすればよいでしょうか? ストリームの処理が不適切なため、破損している可能性がありますか?(私はphpプログラマーではありません)

    $response = new \Zend\Http\Response\Stream();
    $response->setStatusCode(200);
    $headers = new \Zend\Http\Headers();
    $headers->addHeaders(array(
        'Content-Type' => 'image/jpeg',
    ));
    $response->setHeaders($headers);
    $fh = @fopen('php://memory', 'wr');
    $count = stream_copy_to_stream(fopen($url, 'r'), $fh); // URL is OK if I paste it into browser - got image
    rewind($fh);
    //  echo stream_get_contents($fh); // it would look like garbage but means that image is downloaded
    $response->setStream($fh);
    return $response;

編集:これは確かにPHPストリーム処理の問題です。ダウンロードしたコンテンツを元の画像と比較したところ、ファイルの先頭と末尾に何らかのゴミがあることがわかりました。ダウンロードしたコンテンツは、0D 0Aキャリッジ リターンで始まります。それはどこから来ましたか?

4

1 に答える 1

0

問題の解決策を見つけました。ポイントは確かにリードして0D 0Aいました。誤って、破損したファイルの出力に関するこのSO トピックを見つけました。私がする必要があった?>のは、コントローラーのソースの最後から削除することだけで、先頭の新しい行はなくなりました。なぜこれがすべての出力に到達するのか理解できません。そのすべてがPHPだと思います...まあ、あなたは何を知っていますか。ITシーンのIMHOから消えるべきです。ともかく sqrt(-1) loves php === so_true)

于 2013-10-30T07:45:21.143 に答える