あるサーバーから別のサーバーに画像を転送しようとしています。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
キャリッジ リターンで始まります。それはどこから来ましたか?