Как я буду отображать изображения, которых нет в каталоге данных apache? - PullRequest
0 голосов
/ 01 декабря 2011

Я использую Zend Framework и создаю загрузку изображений для пользователей.Итак, я решил разделить изображения пользователей, имея папку для каждого пользователя в примерном каталоге, таком как /var/www/upload/user, и я планирую использовать PHP mkdir для создания каталога для каждого пользователя.В то время как каталог публичных данных apache находится по адресу: /var/www/domain.com/public_html.Итак, я не уверен, как мне поступить.Поскольку изображения отсутствуют в файле public_html, как я могу связать изображения и отобразить их на веб-сайте?Какое решение для этого?или мои настройки некорректны?

Ответы [ 2 ]

1 голос
/ 01 декабря 2011

Если вы храните изображения вне общедоступной папки, вам, вероятно, потребуется создать контроллер / действие, которое принимает информацию, которая идентифицирует изображение, а затем отправляет ее обратно в браузер - с правильными заголовками MIME - через readfile().

В некоторых случаях это имеет смысл: если эти ресурсы необходимо ограничить, например, на основе некоторых критериев Auth / Acl. Если изображения, загруженные пользователем X, не являются общедоступными для всех пользователей / посетителей, но являются частными для пользователя X (или некоторого другого набора пользователей / посетителей, которых вы идентифицируете), тогда применяется этот подход.

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

1 голос
/ 01 декабря 2011

Я предлагаю вам использовать решение, подобное следующему:

структурировать ваши приложения:

application
data
library
public

в application.ini

data_uploads = APPLICATION_PATH "/../data/uploads"

в Bootstrap.php

public function _initDefines()
{
    define('DATA_UPLOADS', $this->getOption('data_uploads'));
}

для одного пользователя создайте каталог в data/uploads

просто и эффективно!;)

...