我正在尝试将图像从一台服务器转发到另一台服务器。多亏了 ZF2,这并不像应有的那么容易。我已经在下面了。结果,图像已损坏-萤火虫说没有响应内容。我可以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 流处理问题。我将下载的内容与原始图像进行了比较,我发现文件中有某种前导和尾随垃圾。下载的内容以 witch 开头0D 0A
是 carrage return。那个是从哪里来的?