将图像显示为 jpeg 在我的应用程序 php 中来自 S3 存储桶?

问题描述

在弹性 beanstalk 上部署应用程序后,我在我的网站中从 S3 将图像显示为 jpeg 时出现问题??

我有一个 PHP/symfony 后端。我设置了一个路由,使用 PHP AWS SDK 的函数 getobject() 从私有 S3 存储桶 中检索 jpeg 文件

在本地环境中,我设法将我的图像显示为存储桶 s3 中的 jpeg 文件,这里没问题。

但是在 aws ElasticBeanstalk 上部署我的应用程序之后,我得到一个对象返回并且我的问题开始了。我收到的对象是这样的:

????JFIFHH??C %#,#&')*)-0-(0%()(??C (((((((((((((((((((((((((((((((((((((((((((((((((((????"??????vL ???TM?? -9??pF??Zg?%K??f?r??A)??Q?_??V.?$?u/???l?3???%?X:?z??l?\??,?NqSv?,??,???-?k???U?Q??K7.????%??*?exp??2@?s???t0;b?' Y??V?F*N2?z&?b??1)W????K S?c?-_??V?=5?L?W??T?sS?nx3??]+??sn?0?G9m??????+ny?+J?1?k?R?-m??????[??e|??S??-?Xo?*>?<???c??c7?-G????kJ82??i?z!??d???dVS;?]]?š?1* ?{??

等等...字符串显然要长得多

这是我的 Controller.PHP 来检索 jpeg 图像:

  /**
    * display images from s3 aws 
    * @Route("/test2/{nom}",name="display_image")
    */ 
    public function getFileFromS3(AmazonS3Service $s3ClientService,$nom){
        $s3 = $s3ClientService->getS3Client();
        $sousRepertoire = $this->getParameter('s3SousRepImg');
        $bucket = $this->getParameter('s3Bucket');
        $repertoire = 'dev';
        $key = trim($repertoire,"/")."/".trim($sousRepertoire,"/")."/".$nom;

        $result = $s3->getobject([
        'Bucket' => $bucket,'Key' => $key
        ]);

        $body = $result['Body'];
        $type = $result['ContentType'];
        
        $response = new Response($body);
        $response->headers->set('Content-Type',$type );

        return $response; // retourne un objet response contenant les données de l'image 
    }

这是我调用 Controller.PHP 的结果的树枝,以在我的网站中显示 jpeg 图像:

 <a href="{{ path('display_image',{'nom':entity.image }) }}">
  <img src="{{ path('display_image',{'nom':entity.image }) }}" width="70" border="0" />
 </a>

它在本地环境中运行良好,但在部署到 aws 时它不正常??

我花了很多时间试图解决这个问题,这似乎是一个很简单的问题,但我就是想不通。我将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)