Php <;Mongo二进制数据>;作为浏览器输出

Php <;Mongo二进制数据>;作为浏览器输出,php,mongodb,symfony,Php,Mongodb,Symfony,我在Mongo DB GridFS中存储了一些图像。我现在正试图显示图像,但遇到了严重的挑战。我所看到的是作为输出的。我已经尝试过设置头球,但似乎没有什么效果。我看到的只是。我尝试发送一个图像标题(jpeg/png等),但图像显示为空。为什么? 以下是显示图像的代码: public function someAction($imageID) { $dm = $this->get('doctrine.odm.mongodb.document_manager');

我在Mongo DB GridFS中存储了一些图像。我现在正试图显示图像,但遇到了严重的挑战。我所看到的是作为输出的
。我已经尝试过设置头球,但似乎没有什么效果。我看到的只是
。我尝试发送一个图像标题(jpeg/png等),但图像显示为空。为什么?

以下是显示图像的代码:

public function someAction($imageID)
    {
   $dm = $this->get('doctrine.odm.mongodb.document_manager');

         $image = $dm->createQueryBuilder('Mybundle:Asset')
                     ->field('id')->equals($imageID)
                     ->getQuery()
                     ->getSingleResult();

  return new Response($image->getFile()->getBytes(), 200, array('Content-Type' => 'image/jpeg'));

}
当我尝试将内容类型更改为文本时,我再次得到

这是我的路由文件:

my_route:
    pattern:  /showimage/{imageID}
    defaults: { _controller: MyBundle:someController:someAction}
    requirements:
        _method:  GET
是从返回的字符串。这种行为可以追溯到很多年前,但我认为它的实现是为了避免在Mongobinda被转换为字符串时无意中生成大量输出或回显不可打印的字符

在您的例子中,我假设
$image->getFile()
对应于
doctor\MongoDB\GridFSFile
对象。我将在那里开始调试,看看
getBytes()
是否返回对象的内部
$bytes
属性、一些文件内容或链接到


此外,共享资产类别的模型/映射信息以及同一查询返回的非水合数据也会有所帮助。将
->(false)
添加到查询生成器链将实现后者。

您找到问题了吗?