Чтение/показ из файлов или загрузка/получение из базы данных бинарных файлов (картинок)

Как с помощью ПХП выдать бинарный файл браузеру? Например, при клике мышкой по линку asd.php у человека в браузере грузиться картинка (именно картинка, а не HTML файл с тегом IMG) или выскакивает окошко с просьбой сохранить .ZIP файл.

Как загружать в базу данных бинарные файлы (картинки, архивы или др) и далее брать их в PHP программе.

Выполнте несколько примеров и вопросы исчезнут. Если проблемы с UPLOAD файлов на сервер - это совершенная другая проблема, просто новички лепят все в одну кучу - читатайте инструкцию "UPLOAD файлов на сервер" (найти ее можно, выйдя на гл. страницу - если кто не догадается).

Чтобы выдать браузеру картинку с диска сервера, надо ...

Пример 1

Создайте файл test.php и в том же каталоге картинку image.jpg. Текст test.php:

<?
  header("Content-type: image/gif");
  readfile("image.jpg");
?>

После этого в браузере загрузите http://ваш-сервер/.../test.php и на экране будет картинка.

Что такое Content-type: image/gif? Ответ: это тип файла, который вы собираетесь выдать браузеру. Для выдачи HTML файла пишите (вместо image/gif) text/html, для выдачи бинарного файла application/xxxxxxx ("xxxxxxx" можно заменить любым словом - браузеру по барабану, все неизвестное ему он предложит сохранить на диск). При выдаче бинарного файла, даже если это будет document.txt или image.jpg, в браузере всплывет окошко с просьбой сохранить файл, где имя файла совпадет с названием программы, т.е. test.php. Как предложить другое (заданное программером) имя, будет написано в другой раз (пока можете в форуме поискать).

Почему, выдавая JPG файл, мы пишем image/gif? Ответ: если не бы это не работало, то перед выдачей файла пришлось бы проверять тип файла (JPG/GIF/PNG). Но это работает, поэтому вегда так пишите, чтобы не делать лишнюю работу.

Пример 2

Сделайте такой файл test.html

<html><body><img src=test.php></body></html>

и в том же каталоге разместите image.jpg и text.php (текст выше), загрузите его в браузере test.html. Таким образом вы можете скрывать имена картинок, которые читаете с диска. Или брать картинку не с диска, а из базы данных, о чем ниже.

Добрый совет

Во время проведения вышеуказанных тестов, позаботьтесь о том, чтобы браузер ничего не брал из кеша, иначе глюки (не увидите обновления).

Размещение бинарных файлов (картинок) в базе данных

Для помещеня бинарного файла в базу данных, надо...

1. создайте таблицу с полем BLOB

2. прочитайте данные, которые надо поместить в базу данных, в переменную $upload. Если это файл (картинка) на диске, то сделайте это так:

<?
   $f=fopen("image.jpg","rb"); // имя файла или картинки -- открыли файл на чтение
   $upload=fread($f,filesize("image.jpg")); // считали файл в переменную
   fclose($f); // закрыли файл, можно опустить
   ...

3. защитите переменную от опасных символов ("прослешьте переменную"):

  
   ...
   $upload=addslashes($upload);
   ...

4. загрузите переменную в базу данных:

   
   ...
   mysql_query("INSERT INTO <таблица> (<поле>) VALUES ('$upload')");
?>

"Таблица" - имя таблицы, "поле" - название колонки в таблице типа BLOB, что были созданы при выполнении пункта 1. Разумеется, чтобы выполнить HTML запрос надо предварительно установить соединение с базой данных.

Для взятия бинарного файла из базы данных в браузере, надо...

Вы будете смеяться, но ничего особого не надо. Просто прочитайте ее как простую переемнную из базы данных. В переменную на языке ПХП можно упихать все, что надо. Правда, есть лимит памяти (будьте внимательны с переменными от 2 МБ), о котором надо помнить. Разумеется, лимит увеличить, но это тема не данной статьи.

Чтобы показать картинку их базы данных, надо...

Освоить пример 1 этой статьи, а вместо чтения из файла, взять переменную из базы данных, примерно вот так:

<?
  ... // подключение к Б.Д.
  $res=mysql_query("SELECT <поле> FROM <таблица> WHERE <условия>")
         or die("SQL ERROR in line ".__LINE__.", function mysql_query");
  $image=mysql_result($res, <строка>, <колонка>); // берем переменную из б.д.
  header("Content-type: image/gif");
  echo $image;
?>

Оставлять комментарии могут только зарегистрированные пользователи.

Если вы не являетесь зарегистрированным пользователем, то вам необходимо зарегистрироваться. Регистрация бесплатна. Если вы уже зарегистрированы на CodeNet, то вам необходимо ввести логин и пароль в верхней (Alt-U) части страницы.

Источник: http://feedproxy.google.com/~r/codenet/read/~3/Zehggr6ANSU/bin.php

Читать комменты и комментировать

Добавить комментарий / отзыв



Защитный код
Обновить

Чтение/показ из файлов или загрузка/получение из базы данных бинарных файлов (картинок) | | 2012-09-13 08:46:45 | | Программирование | | Как с помощью ПХП выдать бинарный файл браузеру? Например, при клике мышкой по линку asd.php у человека в браузере грузиться картинка (именно картинка, а не HTML файл с тегом IMG) или выскакивает | РэдЛайн, создание сайта, заказать сайт, разработка сайтов, реклама в Интернете, продвижение, маркетинговые исследования, дизайн студия, веб дизайн, раскрутка сайта, создать сайт компании, сделать сайт, создание сайтов, изготовление сайта, обслуживание сайтов, изготовление сайтов, заказать интернет сайт, создать сайт, изготовить сайт, разработка сайта, web студия, создание веб сайта, поддержка сайта, сайт на заказ, сопровождение сайта, дизайн сайта, сайт под ключ, заказ сайта, реклама сайта, хостинг, регистрация доменов, хабаровск, краснодар, москва, комсомольск |
 
Поделиться с друзьями: