Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как хранить фотографии в Бд
 
 автор: Tropicano   (09.12.2004 в 21:26)   письмо автору
 
 

Я хочу хранить фотографии на сервере, а в БД ссылки на них, как это сделать? (mysql+php)

   
 
 автор: cheops   (09.12.2004 в 22:06)   письмо автору
 
   для: Tropicano   (09.12.2004 в 21:26)
 

Фотографии большие? Почему спрашиваю - большие объёмы это не конёк MySQL, но если вы не планируете хранить больше 10 Гб, то она вполне сойдёт. При хранении бинарной информации следует воспользоваться полем типа BLOB - чтобы в текстовых полях содержимое файла не билось кодировками...
Алгоритм работы такой:
1) Загружаем на сервер файл (upload) - читаем его содержимое:
<?php
  
// Имя файла
  
$filename "image.jpg";
  
// Открываем файл
  
$fd fopen($filename,"r");
  
// Читаем его содержимое в буфер
  
$bufer fread($fd,filesize($filename));
  
// Закрываем файл
  
fclose($fd);
?>

Уничтожаем теперь не нужный файл
2) Заносим переменную $bufer в базу данных в поле типа BLOB
3) Когда фотография нужна - извлекаем фотографию из базы данных в переменную и сново создаём файл или просто отправляем данные посетителю в браузер...

   
 
 автор: Akira   (09.12.2004 в 23:47)   письмо автору
 
   для: cheops   (09.12.2004 в 22:06)
 

а не проше автоматически создовать ссылку к фото?
По-моему так проше.
Считываем файл, имя + другую инфу и помещаем в папку, а из бд генерируем ссылки.

   
 
 автор: cheops   (09.12.2004 в 23:53)   письмо автору
 
   для: Akira   (09.12.2004 в 23:47)
 

Проще и надёжнее, но у каждого могут быть свои причины, например, фотографии продаются за деньги и хочется их надёжнее защитить. А ещё бывает так, что место на сервере под файлы тарифицируется, а под базу данных нет... очень даже удобно купить хостинг на 10 Мб, а в базу засовать 100 :)))

   
 
 автор: Akira   (10.12.2004 в 12:10)   письмо автору
 
   для: cheops   (09.12.2004 в 23:53)
 

Опа =) Надо взять на вооружение =)
PS Мой проектик разросья =)) Хотел сказать спасибо =)

   
 
 автор: Caramelis_Rex   (14.05.2005 в 07:05)   письмо автору
 
   для: Akira   (09.12.2004 в 23:47)
 

И все же - а как закинуть в БД только путь к картинке?

   
 
 автор: cheops   (14.05.2005 в 13:19)   письмо автору
 
   для: Caramelis_Rex   (14.05.2005 в 07:05)
 

Взять путь и записать в таблицу при помощи оператора INSERT или UPDATE, если происходит редактирование новой записи. Имеется ли у вас уже таблица, в которую необходимо поместить путь к изображению и как попадают изображения на хост по FTP или через HTML-форму?

   
 
 автор: Caramelis_Rex   (17.05.2005 в 06:59)   письмо автору
 
   для: cheops   (14.05.2005 в 13:19)
 

Вообще, речь идет пока что о локальной web-странице.
Подцеплять изображение я хочу через HTML-форму (непосредственно сам путь к изображению, и три значения, описывающих это фото)

   
 
 автор: cheops   (17.05.2005 в 13:47)   письмо автору
 
   для: Caramelis_Rex   (17.05.2005 в 06:59)
 

Не очень понятно в чём затруднение?

   
 
 автор: Caramelis_Rex   (18.05.2005 в 06:19)   письмо автору
 
   для: cheops   (17.05.2005 в 13:47)
 

Т.е. я считываю путь к изображению, присваиваю ему переменную и прописываю эту переменную (т.е. ее значение) в БД!? А в каком типе предпочтительней хранить путь?

   
 
 автор: cheops   (18.05.2005 в 23:25)   письмо автору
 
   для: Caramelis_Rex   (18.05.2005 в 06:19)
 

В любом текстовом столбце, можно TINYTEXT - в нём 255 символов, не нравится TEXT-типы, можно использовать CHAR, например CHAR(255).

   
 
 автор: P@Sol   (21.06.2005 в 14:13)   письмо автору
 
   для: cheops   (09.12.2004 в 22:06)
 

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

   
 
 автор: cheops   (21.06.2005 в 18:58)   письмо автору
 
   для: P@Sol   (21.06.2005 в 14:13)
 

Его придётся извлечь из базы данных, если функция требует имя файла, его также придётся сохранить с временным файлом, если только содержимое файла, то передать его непосредственно из базы.

   
 
 автор: sickness   (26.11.2005 в 14:59)   письмо автору
 
   для: cheops   (09.12.2004 в 22:06)
 

вопрос по второму пункту..... а что если в $bufer есть символы которые разрушат структуру запроса (ну там кавычки двойные кавычки и всё такое)??? а если добавить слэшэй то может разрушитсья структура JPG...

   
 
 автор: DDK   (26.11.2005 в 15:45)   письмо автору
 
   для: sickness   (26.11.2005 в 14:59)
 

Слэши добавляются только на момент занесения в базу. При выводе их уже нет, если вы не замечали.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования