0

我正在尝试将图像从一台服务器转发到另一台服务器。多亏了 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。那个是从哪里来的?

4

1 回答 1

0

我找到了解决我的问题的方法。重点确实在领先0D 0A。偶然我发现了这个关于输出损坏文件的SO主题。我需要做的就是?>从控制器的源端删除,并且领先的新线消失了。我不明白为什么这甚至会完全输出。这一切我认为 PHP ......你知道吗。恕我直言,它应该从 IT 场景中消失。反正 sqrt(-1) loves php === so_true)

于 2013-10-30T07:45:21.143 回答