Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Как скачать файл из базы данных MySQL?


Автор: Niakita 27.12.2012, 18:58
Создал в базе данных MySQL таблицу, заполнил, в поле с типом mediumblob  закачал rar архивы.

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

Как на PHP написать запрос, чтобы можно было скачивать файлы из базы данных?

Автор: Fortop 27.12.2012, 21:53
Для начала не стоит их там хранить.

Но если уж сохранили, то и отдавайте соответствующим образом.
В соседней ветке про картинку есть нужный код
Только данные вы берете не из файла, а из БД

Добавлено через 29 секунд
http://forum.vingrad.ru/forum/topic-360605/anchor-entry2539243/0.html

Автор: Niakita 2.1.2013, 06:19
Цитата

Для начала не стоит их там хранить.


Думаю если создатели предусмотрели такую возможность - то ей нужно пользоваться.
----------------------------------------------------------------------------------------------------------------------
За ссылку спасибо - будем изучать.

Автор: Arantir 2.1.2013, 07:34
Цитата(Niakita @  2.1.2013,  05:19 Найти цитируемый пост)
Думаю если создатели предусмотрели такую возможность - то ей нужно пользоваться.

@offtopic 
А на работу каждый день пожарными лестницами ходить что ли?
eval в php, пропускание точки с запятой в javascripts, выключение компьютера через кнопочку на блоке, держание фейерверкера в руке при поджигании... В мире есть полно вещей, которые делать никто не запрещает... но их лучше не делать в 99% случаев.
@offtopic 

Базы данных используются в сотнях случаев. И далеко не везде есть возможность просто хранить файлы с помощью файловой системы ОС. Черт побери, в вашем посте упомянут PHP. Наверняка же вы можете просто складировать любые файлы в какую-то папочку. Хранение и обработка файлов с диска (с файловой системы ОС) по сравнению с БД быстрее, меньше грузит процессор, занимает куда меньше оперативной памяти...

Автор: Niakita 2.1.2013, 07:48
Да - знаю про это, пока искал как файл из бд загрузить - кучу ответов на форумах увидел про то, что нельзя в Бд файлы хранить, а вот про то как всё таки выгрузить с базы данных файл на компьютер нигде толком вменяемо описано не было.

Автор: skyboy 2.1.2013, 08:32
Niakita, так сделал или нет? Тебе Fortop ссылку давал выше, видел?

Автор: Niakita 2.1.2013, 08:42
Цитата

Niakita, так сделал или нет? Тебе Fortop ссылку давал выше, видел? 


Да, видел - сейчас разбираюсь.
(С PHP практически не знаком)   



Автор: lomaster 2.1.2013, 14:10
Цитата

кучу ответов на форумах увидел про то, что нельзя в Бд файлы хранить
  не надо слушать smile
http://www.delphimaster.ru/cgi-bin/forum.pl?n=3&id=1356595975&p=1

Автор: Fortop 2.1.2013, 16:15
Цитата(lomaster @  2.1.2013,  14:10 Найти цитируемый пост)
 не надо слушать

Старших надо слушать это аксиома.

В случае файлов в БД слушать надо вдвойне, потому что только Oracle и MS SQL имеют некоторые механизмы (читай костыли) нивелирующие проблемы такого хранения.
В MySQL такого нет и не предвидится, поэтому файлы в нем хранить не надо.

Автор: skyboy 2.1.2013, 16:37
хранение в БД вместо файловой системы:
а) влияет на производительность
б) сложнее в реализации: это ты еще не узнал, что если твой скрипт не обрабатывает Range параметр, у тебя докачка/мультипотоковая закачка не поддерживается. и еще другие механизмы, которые НТТР сервер при работе с файлами реализует только так.
в) не масштабируется — когда в линуксе отдельные папки можно по сети просто примонтировать, прозрачно для НТТР сервера, с содержимым БД такое не прокатит — придется с кластеризацией плясать.
Цитата(Fortop @  2.1.2013,  15:15 Найти цитируемый пост)
Старших надо слушать это аксиома.

слишком радикально звучит  smile не хватает только "эх, молодежь уже не та пошла"

Автор: Fortop 2.1.2013, 19:23
Цитата(skyboy @  2.1.2013,  16:37 Найти цитируемый пост)
слишком радикально звучит   не хватает только "эх, молодежь уже не та пошла"

Да нормально звучит smile
И не в молодежи дело. 
А в неучах таких как lomaster

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)