Как получить доступ к загруженным изображениям / документам вне моего public_html?

Как я могу получить доступ к загруженным изображениям / документам вне моего public_html?

например, у меня есть эта структура,

lib/
upload/ (uploaded images and pdfs)
public/index.php
bootstrap.php

общественности /index.php,

// Include application bootstrap
require_once dirname(__FILE__) . '/../bootstrap.php';

$app->get('/about', function () use ($app, $log) {
    echo '<p><img src="' . '/../upload/image/cat.jpg' . '"/></p>';
});

// Important: run the app
$app->run();

Я могу получить доступ bootstrap.php с помощью dirname(__FILE__) но я не могу сделать это с изображениями.

Я придерживаюсь этой рамочной идеи из этого. Но могу ли я хранить свои изображения и документы вне общедоступной папки?

Как насчет файла JavaScript?

Я замечаю, что большинство фреймворков хранят эти элементы в общей папке.

2 ответа

<?php
header('Content-type: image/jpg');
readfile('/path/to/upload/image/cat.jpg');

может работать это

или же

<?php
header('Content-Type: image/jpeg');
$_file = 'cat.jpg'; // or $_GET['img']
echo file_get_contents('/upload/image/'.$_file);
?>

Существует большая разница в том, как вы ссылаетесь на bootstrap.php и изображения. Первый загружается процессором PHP, второй - браузером. Конечно, вы можете открыть файл изображения с помощью, например, fopen() в PHP, если у вас есть разрешения, но на сервере не работает браузер на стороне клиента.

Вы должны либо предоставить скрипт для отправки файлов в браузер, либо иметь загруженные изображения, на которые вы хотите сослаться в HTML, в корневой каталог документа, либо настроить псевдоним на веб-сервере.

Другие вопросы по тегам