如何在 PHP Slim3 中显示 Uploads 目录中的图像?

How can I display the images from the Uploads directory in PHP Slim3?

我在 PHP 7 中有一个使用 Slim3 微框架的应用程序。

项目结构如下:

我的应用程序 运行 我在 apache 中使用了这个配置:

<VirtualHost *: 80>
    ServerName app
    DocumentRoot "C: \ xampp \ htdocs \ app \ public"
</VirtualHost>

要访问 public 资产(位于 public 文件夹内),我使用这些路由:

href = "../ assets / images /"
href = "../ assets / scripts /"
href = "../ assets / styles /"

我想访问 * 上传 * 文件时遇到问题。

因为我找不到如何把路径放在 href 属性中。

执行以下测试:

问题是:如何访问上传文件夹中的文件?

注1:有人建议我把Uploads文件夹放在public

里面

注2:在public/index.php里面我有这个代码

$root = dirname(__DIR__);
$settings['root'] = $root;
$settings['temp'] = $settings['root'] . '/temp';
$settings['public'] = $settings['root'] . '/public';
$settings['uploads'] = $settings['root'] . '/uploads';

注意 3:我尝试使用这样的路径 url

<img src="{{ uploads }}/product_1.png">

但是在控制台上出现这个错误:

Not allowed to load local resource

现在您正在使用相对路径 (../file.jpg)。这是一种棘手的做事方式,通常不是好的做法。相反,考虑定义一个指向 $_SERVER['DOCUMENT_ROOT'].

的变量
define('SITE_ROOT', $_SERVER['DOCUMENT_ROOT']);

echo '<img href="' . SITE_ROOT . '/public/assets">';

首先,每个 public 文件都应该放在您的 public 目录中(apache 应该允许它是 public)其余的目录应该被禁止进行外部浏览。

然后你就不会有任何问题,因为 public 目录允许在你的 apache 配置文件中浏览:

<VirtualHost *: 80>
    ServerName app
    DocumentRoot "C: \ xampp \ htdocs \ app \ public"
</VirtualHost>