使用SLIM Framework v3

时间:2018-04-17 07:28:16

标签: php html image svg slim

我正在尝试使用Slim micro framework v3显示图像而没有结果。

首先,我是Slim的新手,所以我不知道使用该框架展示图像的最佳实践是什么。

所以,现在我正在尝试这个:

$app->get('/images/resources/{resource}', function (Request $request, Response $response, array $args) {
    $resource = "./images/resources/".$args['resource'];
    $this->logger->info("requested imaged: <".$resource.">");
    if(file_exists($resource))
        $this->logger->info("image found in <".$resource.">");
    else
    {
        $this->logger->info("image NOT found in <".$resource.">");
        return;
    }
    $image = file_get_contents($resource);
    $finfo = new finfo(FILEINFO_MIME_TYPE);
    $response->withHeader('Content-Type', 'content-type: ' . $finfo->buffer($image));
    echo $image;
});

这不完全有效,例如,记录器报告我存在所有图像,但在HTML页面中我只看到PNG和任何SVG:

enter image description here

相对于屏幕截图的HTML代码是:

<div class="row text-center" id="downloadApps">
    <div class="col-3"><a href="https://www.microsoft.com/store/apps/mybeautifulapp=badge"><img
                    class="downloadButton"
                    src="https://assets.windowsphone.com/13484911-a6ab-4170-8b7e-795c1e8b4165/English_get_L_InvariantCulture_Default.png"
                    alt="Get"/></a></div>
    <div class="col-3"><img class="downloadButton" src="/images/resources/google_play_store.png"
                            alt="Get"/></div>
    <div class="col-3"><img class="downloadButton" src="/images/resources/ios_app_store.svg"
                            alt="Get"/></div>
    <div class="col-3"><img class="downloadButton" src="/images/resources/mac_app_store.svg"
                            alt="Get"/></div>
</div>

1 个答案:

答案 0 :(得分:1)

我为我的项目实现了这项功能,并且工作正常。

请检查以下代码,

$app->get('/image/p/{data:\w+}', function($request, $response, $args) {
$data = $args['data'];
$image = @file_get_contents("http://localhost/main/media/image/p/$data");
if($image === FALSE) {
    $handler = $this->notFoundHandler;
    return $handler($request, $response);    
}

$response->write($image);
return $response->withHeader('Content-Type', FILEINFO_MIME_TYPE);
});