【问题标题】:Silex cant display images as responseSilex 无法显示图像作为响应
【发布时间】:2016-07-09 19:14:57
【问题描述】:

我无法将任何响应显示为图像。我试过silex方法和纯PHP,像这样

   $file = '1465797900_yoda.png';


    if (!file_exists('images/'.$file)) {
    return $app->abort(404, 'The image was not found.');
}

$stream = function () use ($file) {
    readfile($file);
};

return $app->stream($stream, 200, array('Content-Type' => 'image/png'));

或纯PHP:

   $file = 'images/1465797900_yoda.png';
$type = 'image/png';
header('Content-Type:'.$type);
header('Content-Length: ' . filesize($file));
echo readfile($file); 

如果我使用方法 1,我的响应是空白图像,但方法 2 返回随机轨道,如下所示:

J����j��?'T|֢1���Kc�Zu�#��9�G��IEND�B`�

纯 PHP 没有问题,只有 Silex。 感谢您的帮助。

【问题讨论】:

  • 如果你把图片链接放在 块中,有问题的朋友吗?
  • 好吧,您的代码似乎与 Silex 文档中的代码相匹配,所以这很奇怪(我自己从未尝试过这样做)。您是否尝试过此处显示的技术:whateverthing.com/blog/2013/06/30/quick-web-apps-part-two/…(这只是谷歌搜索的随机结果)。
  • @AniruddhaChakraborty 是的。但我需要加密我的图像,所以我不应该将图像传递给 img src。
  • @AdamCameron 是的,我试过了。我有同样的结果。图片是空白的。
  • 您能否向我们提供一个完整的(但已缩减;没有与问题无关的内容)演示您的代码不起作用。我们可以放入香草 Silex 网站并亲自查看的东西吗? (例如:根据 sscce.org)。包括从路由到完整控制器的所有内容。您只是在浏览器地址栏中点击 URL,还是从站点的视图中调用它?如果是后者,也包括该代码。

标签: php silex


【解决方案1】:

我写了以下内容用于从文件夹中提供图片:

public function getpic( $id ) {
    $path = '/assets/userpics/' . $id;
    if ( is_file( $path ) ) {
        return new BinaryFileResponse( $path );
    }
    //make some error stuff
}

在你调用图像的Html中使用或通过js加载它

【讨论】:

  • 你是这个意思? $src_tag = "getpic()."/>"
  • 不,我已经添加了一个调用 getpic($id) 的路由,例如 /pic/{$id} 并且你有你的 html/twig 文件,你有类似
  • 我仍然不知道为什么这个解决方案不起作用,但现在我在其他域的新 silex 项目中有我的 repo。无论如何,谢谢你的帮助:)
猜你喜欢
  • 2021-02-05
  • 2021-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-02
相关资源
最近更新 更多