MYSQL работает с изображениями? - PullRequest
1 голос
/ 21 марта 2011

Как сохранить несколько изображений в базе данных MySQL и перезванивать по мере необходимости? Мне нужно хранить несколько данных людей и их фотографий для работы профиля на моем сайте. Пожалуйста, помогите.

ОБНОВЛЕННЫЙ ВОПРОС

P. S. - Я ЗНАЮ, ЧТО ЕСТЬ РЕШЕНИЕ ДЛЯ ХРАНЕНИЯ ФАЙЛА НА FILESYSTEM. НО ХОЧУ ЗНАТЬ ПРОЦЕСС ХРАНЕНИЯ ЭТОГО НА БД. ПОЖАЛУЙСТА, ПОМОГИТЕ МНЕ ВМЕСТО ДАТЬ ЗАКЛЮЧИТЕЛЬНЫЕ ОТВЕТЫ.

Ответы [ 5 ]

2 голосов
/ 21 марта 2011

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

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

Это позволит вам использовать сборку php в методах вывода файлов (readfile), а также x-sendfile.

Если вам нужно загрузить изображение из базы данных, то вы будете загружать изображениев php 'памяти для каждого запроса.

Но если вы действительно хотите это сделать,

<?php
saving the file would be something like this
$file = $_FILES['uploadedfile']['tmp_name'];
$data = addslashes(fread(fopen($file, "r"), filesize($file)));

mysql_query("INSERT INTO files (file) VALUES ('$data')");

просто извлеките данные из строки и затем сделайте что-то вроде:

 <?php
 $res = mysql_query("select file FROM my_files WHERE file_id=$file_id");
 list($data) = mysql_fetch_row($res);
 header("Content-type: $type");
 header("Content-length: $size");
 header("Content-Disposition: attachment; filename=$name");
 header("Content-Description: PHP Generated Data");
 echo $data;

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

2 голосов
/ 21 марта 2011

Я также отвечу, что это не очень хорошая идея ...

кстати, вы можете сделать это, используя тип столбца BLOB, и в функции загрузки вы должны вставить его в запрос как $ _FILES ['uploaded_file'] ['name']

как пример: INSERT INTO db_table (id, image) VALUES (NULL, '{$_FILES['userfile']['name']}');

0 голосов
/ 21 марта 2011

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

Например, если у вас есть веб в / home / web /, вы можете создать каталог, например / home / web / images /.Рекомендуется создавать разные каталоги, такие как / home / web / images / 2011/03 /, потому что хранить слишком много файлов в одном каталоге не очень хорошая идея.

Затем вы можете сохранить эти пути в своей пользовательской таблице.: field image: varchar (XXX) = '/home/web/images/2011/03/image-for-one-user.jpg'

Когда вы пишете изображение в своем HTML:

<img src="/images/2011/03/image-for-one-user.jpg" />

Ответ на ваш вопрос: вы можете хранить двоичные данные в MySQL в поле BLOB-объекта.Но мне это не нравится.Подумайте, если у вас несколько пользователей, у вас будет очень большая база данных.

0 голосов
/ 21 марта 2011

используйте тип данных BLOB.

BLOB расшифровывается как Binary Large OBject, и его можно использовать для хранения любых двоичных файлов, включая изображения.

Надеюсь, это поможет.

Энди

0 голосов
/ 21 марта 2011

Это кажется мне излишним и неэффективным, и я никогда не слышал о том, чтобы кто-то хранил файлы непосредственно в БД ... Но опять же, я заметил, что испытал.

Разве вы не можете хранить свои изображения где-нибудь на вашем сервере и сохранять путь в БД?

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