PHP и MYSQL - что мне делать с данными изображения? - PullRequest
2 голосов
/ 17 августа 2011

Я создаю блог с изображением каждого поста. У меня дилемма, я не уверен, что делать с данными моего изображения ...

Должен ли я вставить данные изображения в базу данных MYSQL с помощью BLOB?

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

Есть ли стандартизированный способ?

С уважением, адам

Ответы [ 6 ]

3 голосов
/ 17 августа 2011

Загрузите файлы на свой сервер и сохраните местоположение файла в вашей базе данных.Меньшая нагрузка на вашу БД и ваш HTTP-демон лучше обрабатывает изображения, чем MySQL.

0 голосов
/ 17 августа 2011

Оба являются допустимыми подходами.

Они имеют различные преимущества / недостатки.

Хранение его в базе данных означает, что вам нужно добавить дополнительный код, чтобы изменить изображение на представление, которое поместится внутриоператор INSERT / UPDATE (base64 является одним из подходов и требует эквивалентного декодирования, но вы можете просто использовать mysql_real_escape_string ()).Хотя вы не можете запросить изображение напрямую (кроме поиска точных совпадений), это может уменьшить количество операций поиска и ввода-вывода, необходимых для извлечения данных, по сравнению с поиском пути в базе данных и последующим извлечением файла.

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

OTOH, использование файловой системы делает ваши таблицы данных намного меньше и, следовательно, быстрее извлекает записи из.

, что делаеткаталог в папку с изображениями пользователей

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

0 голосов
/ 17 августа 2011

Всегда сохраняет изображения, музыкальные файлы и т. Д. В системных файлах на диске, а затем сохраняет их URL-адреса в базе данных.Это сделает его

1) быстрее

2) проще в настройке параметров безопасности

3) лучше, чем я могу представить

Недостаток
Если файловая система повреждена, вам будет трудно ее восстановить.

Вы также можете использовать сторонние сайты для размещения изображений, вы можете использовать Amazon S3 или Mosso Cloud Files.

Проблема с файловой системой в том, что ее трудно масштабировать.

Facebook использует cassandra для хранения изображений.

Поскольку это блог, вы можете хранить изображения в файловой системе.

0 голосов
/ 17 августа 2011

преобразовать данные изображения в base64. Это можно сделать в PHP:

<? $image=file_get_contents("image.png"); $image=base64_encode($image); ?>

Хранение изображений в БД - хорошая идея для защищенных изображений.

0 голосов
/ 17 августа 2011

Вы должны хранить изображения в папке.Нажмите на ссылку ниже, где вы можете получить представление о том, как обрезать изображения разного размера и сохранить имя изображения в таблице базы данных:

Как загрузить изображения в обычной форме вставки (MySql)?после загрузки изображение должно иметь три версии разных размеров и разных имен

0 голосов
/ 17 августа 2011

Общий подход заключается не в том, чтобы хранить файлы в БД, если вы не понимаете, зачем вам это нужно хранить там. Итак, поскольку вы не уверены, их намного проще хранить в папке загрузки.

Но на тот случай, если вы решите, что вам нужно хранить файлы (неважно, изображения или другие) в БД, вы должны объявить поле BLOB, а затем сохранить его с помощью некоторого механизма БД, поддерживающего BLOB. 'PHP-расширение MySQLi: хранение и извлечение BLOB-объектов' - хороший пример того, как это можно сделать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...