doulao1934 2012-08-24 23:27
浏览 335

<Mongodb二进制数据>作为浏览器输出

I have stored some images in Mongo DB GridFS. I am now trying to display the image but am running into serious challenges. All I see is <Mongo Binary Data> as the out put. I have played around with setting headers but nothing seems to be working fine. All I see is <Mongo Binary Data>. I try sending an image header (jpeg/png etc) but the image comes out empty. Why ?

Here is my code that displays the image:

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'));

}

When I try changing the content type to text, I get <Mongo Binary Data> again.

Here is my routing file:

my_route:
    pattern:  /showimage/{imageID}
    defaults: { _controller: MyBundle:someController:someAction}
    requirements:
        _method:  GET
  • 写回答

1条回答 默认 最新

  • douza6300 2014-01-15 01:08
    关注

    "<Mongo Binary Data>" is the string returned from MongoBinData::__toString(). This behavior goes back a number of years, but I assume it was implemented to avoid inadvertently generating large output or echoing non-printable characters if MongoBinData was ever cast to a string.

    In your case, I assume $image->getFile() corresponds to a Doctrine\MongoDB\GridFSFile object. I would start debugging there to see if getBytes() is returning the internal $bytes property of the object, some file contents, or chaining to MongoGridFSFile::getBytes().

    Additionally, sharing the model/mapping information for your Asset class could help, as well as the non-hydrated data returned by the same query. Adding ->hydrate(false) to the query builder chain would accomplish the latter.

    评论

报告相同问题?

悬赏问题

  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan