Розглянемо ситуацію, коли необхідно організувати віддачу зображень з сервера користувачеві скажімо «інтелектуально», про це детальніше. Так склалося, що звичним чином ми зберігаємо файли зображень на сервері, в якій або публічної директорії, а на веб-сторінках ми передаємо зображення за прямими посиланнями. Тобто ми беремо посилання на зображення, вбиваємо її в браузер, отримуємо зображення по прямой ссылке.
Проблема в тому, що для деяких проектів не допустимо, наприклад, отримання доступу до зображень не авторизованим користувачам, або немає можливості розмежувати права доступу до файлу по посиланню. Так само не рідкісні випадки, коли в залежності від запиту необхідно виконати які-небудь маніпуляції з файлу або з базою даних на сервері, або якось ще, дотримуючись необхідних завдань за проектом.
Припустимо, якщо я авторизувався на сайті, у мене є яка-небудь посилання, на відкриття якої я отримую файл зображення — посилання працює, я роблю вихід із системи авторизації — то посилання не працює відповідно.
Завдяки можливості використання сценаріїв в якості обробників запиту ми можемо гнучко маніпулювати даними, віддаються користувачеві. Як відомо протокол HTTP для свого належного функціонування обміну даними використовує заголовки запитів і відповідей. У цих заголовках так само поряд з іншими параметрами передаються дані про тип даних передаються браузеру. Посилаючи необхідні заголовки відповіді, ми можемо з скрипта повернути дані удобоваримом форматі.
Тепер про самою логікою. Безпосередньо самі файли після завантаження на сервер ми можемо зберігати в окремій закритій директорії, або у базі даних в бінарному вигляді. Віддавати файли можна за допомогою скрипта, в своєму роді це нагадує концепцію єдиної точки входу, передаючи йому параметр, який вказує на конкретний файл. У цьому файлі скрипті можна зробити все що завгодно, як говорилося раніше, перевірити авторизацію користувача, записати інформацію про запит, зробити часовий інтервал, протягом якого можна отримувати конкретний файл, і т. д.
Приклад. Припустимо, у нас є файл звичайний файл – зображення, який лежить на сервері, шлях до нього такий:
./images/my_image.jpeg

Доступ до директорії /images для браузерів закривається відповідно, зробити це можна звично через .htaccess. Отримувати зображення ми будемо через скрипт, прозовем його getimage.php.

array(
‘path’ => ‘./images/my_image.jpeg’,
‘type’ => ‘image/jpeg’
);
);
# Перевіряємо наявність потрібного ключа в масиві
if (array_key_exists($_GET[‘id’],$arFiles)){
# віддаємо файл
header(“Content-type: “.$arFiles[$_GET[‘id’]][‘type’]);
readfile($arFiles[$_GET[‘id’]][‘path’]);
} else { # файлу немає
header(“HTTP/1.0 404 Not Found”);
die;
}
?>

Запит файлу ми можемо зробити в браузері таким чином:
getimage.php?id=my_file

Відбудеться наступне, у масиві $arFiles буде проведений пошук елемента з ключем my_file, у разі успіху в якості відповіді надсилається зображення, у іншому випадку буде заголовок 404 Not Found.

Додав: htmaker, 24.08.2014 р.
(Ще не оцінили)

Завантаження…

Діліться з друзями:

См. також:


Пісочниця для PHP
Рубрика: PHP, Інструменти

Конфіг файли
Рубрика: PHP

Установка XCache в Linux CentOS
Рубрика: Linux, PHP

Використання SOAP в PHP
Рубрика: PHP

Встановлення PHP Soap на CentOS
Рубрика: Linux, PHP

Обсяг даних в зручному форматі на PHP
Рубрика: PHP

Транслітерація символів на PHP
Рубрика: PHP

Як перетворити URL-рядок в масив?
Рубрика: PHP

Добірка шаблонів регулярних виразів
Рубрика: PHP