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

问题描述

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

项目的结构如下:

Projecct Structure

要运行我的应用程序,请在apache中使用以下配置:

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

要访问公共资产(位于公共文件夹内),请使用以下路线:

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

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

从那时起,我找不到如何将路径放入href属性中。

执行以下测试:

  • 在资源中复制并粘贴.jpg文件。通过href =" ../ assets /file.jpg "
  • 访问
  • 将.jpg文件复制并粘贴到公共位置。通过href =" ../file.jpg "
  • 访问
  • 在公共场所之外复制和粘贴.jpg文件href =" ../../file.jpg "
  • 无法访问

问题是:如何访问“上载”文件夹中的文件

注意1:有些人建议我将“上载”文件夹放在公共位置

注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:我尝试使用这样的路径网址

<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">';
,

首先,每个公共文件都应放在您的公共目录中(该文件应在apache允许下被公开)。其余目录应禁止外部浏览。

然后您将没有任何问题,因为允许公共目录浏览您的apache配置文件:

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...