微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决将图像显示为 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 举报,一经查实,本站将立刻删除。