Загрузка картинки в БД
Каким образом можно залить картинку в БД?
А ты хорошо подумал?
Некоторые хостеры запрещают такое...
использую InterBase FireBird 1.5
хорошо. мой хостер разрешает.
советую подумать еще раз, стоит ли совершать такую ошибку...
получение файла из формы в зависит от языка.
php:
http://forums.webscript.ru/showthread.php?s=&threadid=3931&msgnum=0
perl:
http://faq.webscript.ru/PerlFAQ
я хотел сделать через файл, но админ сказал делать через базу. типа для безопасности
но админ сказал делать через базу. типа для безопасности
:D у каждого свои тараканы в голове
когда начальство будет иметь с тобой секс, на админа не сошлешся :)
просто я с базой никогда так не работал и незнаю, в чем могут быть глюки... =/
Сказано с файлами - делай с файлами.
Многие крупные поекти хранят картинки в базе, ведь файловая система - тоже, своебразная, база данных, и не самая быстрая, между прочим.
а как мне обосновать то, что лучше с файлами?
просто я с базой никогда так не работал и незнаю, в чем могут быть глюки... =/
на самом деле глюков никаких нету.
И если этих картинок будет очень много, то на БД будет работать даже быстрее.
Другое дело, что безопасность не является аргументом для переходя на БД. Файлы можно защитить и другим путем.
для апача все просто: запрещаем доступ к папке через .htaccess. А с помощь серверного скрипта выкидываем нужную картинку.
Для других нужно эту папку расположить вне рутовой папки веб сервера.
единственный недостаток таких методов - трудная реализация докачки файла.
то что они так делают это не означает что так правильно,
они могут позволить себе более сильные сервера вместо того чтобы оптимизировать софт. Тем более что многие крупные проекты не хранят картинки в базе.
Може файловая система и не такая уж быстрая по сравнеию с чемто но если сравнивать с БД она очень и очень быстрая.
2Zipo
я не знаю где ты прочитал миф что при возрастании коло-ва файлов(записей в базе) падения скорости поиска в базе будет меньше чем поиск файла в каталоге, но лучьше забудь это и не ходи туда больше.
Чем плохо хранить файлы в базе:
1. Дамп базы.
Дампить базу нужно регулярно(предположим что проект не мертвый и обнавления и добавления происходят регулярно). Обычно это раз в день. Еще нужно хранить эти самые дампы за какойто период.
+ если риссунки в базе то просто сделал дамп и все.
- дамп получится огромный. во 10-1000 раз больше чем для базы без файлов. Если файлы хронятся на винте ты можеш выбирать нужно ли делать их резевное копирование или нет. Легко определить какие файлы были измененный с последнего дампа и положить только их в архив с сохранением структуры. Впринципе тоже самое можно сделать для базы с файлам, но это большой геморой который с лихвой перечеркивает все преимущества
2. Рост нагрузки на сервер
Генерация страници и создание ссылок на файлы идут одинаково(почти).
Если файлы на винте:
Ссылки прямые, они обрабатываются ТОЛЬКО веб сервером без запуска скриптов и обращений в базу. Эти файлы могут быть уже в КЕШЕ, быстрее доступ придумать труднее.
Если файлы в базе:
Для каждой картинки запускается новый скрипт, новый коннект к базе новая выборка. Кеширования нет. Конечно не все так плохо. Можно сделать так чтобы скрипты не компилились(интепритировались) при каждом обращение, постоянный коннект к базе(с этим осторожно), кешировать скрипты(потом боротся с этим) но гемор лишний гемор.
3. Таблица с файлами это динамическая таблица.
+ Меньшый размер по сравнению со статичной (если без файлов конечно :) )
- Медленнее поиск, хуже кешируется, более сильная фрагментация, хуже востанавливается при сбое.