Могу ли я хранить изображения в MySQL [дубликат]
Возможные Дубликаты:
изображения в MySQL
хранение изображений в MySQL
Я пытаюсь разработать веб-сайт, где пользователи загружают свои изображения в рамках регистрации. Я хочу, чтобы для каждого изображения должен быть большой палец, созданный с помощью PHP (что не так сложно). Я хочу сохранить большие пальцы (так как они очень маленькие) в базе данных, и я использую MySQL. (Я не хочу сохранять большие пальцы как физические файлы на водить.)
Позволяет ли MySQL сохранять и извлекать данные изображения и как это сделать? Если он не поддерживает данные изображения, есть ли бесплатная база данных, что ли? Я буду рад, если ссылка может быть предоставлена.
Спасибо.
4 ответа:
Да, вы можете хранить изображения в базе данных, но это не целесообразно на мой взгляд, и это не общая практика.
общая практика заключается в хранении изображений в каталогах файловой системы и хранении ссылок на изображения в базе данных. например, путь к изображению, имя изображения и т. д.. Или, альтернативно, вы можете даже хранить изображения в сети доставки контента (CDN) или многочисленных хостах на некотором большом пространстве физической территории и хранить ссылки для доступа к ним ресурсы в базе данных.
изображения могут получить довольно большой, больше, чем 1 МБ. И поэтому хранение изображений в базе данных потенциально может привести к ненужной нагрузке на вашу базу данных и сеть между вашей базой данных и вашим веб-сервером, если они находятся на разных хостах.
Я работал в стартапах, средних компаниях и крупных технологических компаниях С 400 тыс.+ сотрудников. За мой 13-летний профессиональный опыт я никогда не видел, чтобы кто-то хранил изображения в базе данных. Я говорю это поддержка заявления это необычная практика.
вам нужно будет сохранить как blob, LONGBLOB тип данных в mysql будет работать.
Ex:
CREATE TABLE 'test'.'pic' ( 'idpic' INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, 'caption' VARCHAR(45) NOT NULL, 'img' LONGBLOB NOT NULL, PRIMARY KEY ('idpic') )
как говорили другие, это плохая практика, но это можно сделать. Не уверен,что этот код будет хорошо масштабироваться.
вы можете хранить изображения в MySQL в виде больших двоичных объектов. Однако, это проблематично по нескольким причинам:
- изображения могут быть сложнее манипулировать: вы должны сначала получить их из базы данных, прежде чем массовые операции могут быть выполнены.
- за исключением очень редких случаев, когда вся база данных хранится в ОЗУ, базы данных MySQL в конечном итоге хранятся на диске. Это означает, что образы БД преобразуются в большие двоичные объекты, вставляются в базу данных, а затем сохраняются на диске; вы можете сэкономить много накладных расходов, просто сохраняя их на диске.
вместо этого рассмотрите возможность обновления таблицы для добавления поля image_path. Например:
ALTER TABLE `your_table` ADD COLUMN `image_path` varchar(1024)
затем сохраните изображения на диске и обновите таблицу с помощью пути к изображению. Если вам нужно использовать образы, извлеките их с диска, используя указанный путь.
выгодным побочным эффектом этого подхода является то, что изображения не обязательно хранятся на диске; вы можете так же легко сохраните URL-адрес вместо пути к изображению и извлеките изображения из любого места, подключенного к интернету.
вам нужно будет сохранить изображение в базе данных в виде большого двоичного объекта.
вы хотите создать столбец с именем PHOTO в таблице и установить его в качестве mediumblob.
тогда вы захотите получить его из формы следующим образом:
$data = file_get_contents($_FILES['photo']['tmp_name']);
а затем установите для столбца значение в $data.
конечно, это плохая практика, и вы, вероятно, хотите сохранить файл с именем, которое соответствует учетной записи пользователя.