|
|
|
| Недавно уже обращался сюда по этому поводу. Не помогли советы. В браузер вместо картинки выходит какая-то абракадабра, куча разных символов. Подскажите, какие условия должны быть соблюдены, чтобы в браузер была выведена именно картинка? | |
|
|
|
|
|
|
|
для: Костян
(25.05.2008 в 14:28)
| | Если у вас в базе хранится действительно изображение, то у вас ошибка в самом выводе в браузер. Напишите код, которым вы делаете вывод в браузер. | |
|
|
|
|
|
|
|
для: sim5
(25.05.2008 в 15:04)
| |
require_once("config1.php");
// Провряем передан ли параметр id_image
// и является ли он целым числом, чтобы
// предотвратить SQL-инъекцию
// Извлекаем MP3-файл из базы данных
$query = "SELECT * FROM image
WHERE id_image = 5";
$img = mysql_query($query);
if(!$img) exit(mysql_error());
$image = mysql_fetch_array($img);
// Отсылаем заголовки на загрузку файла
header("Content-type: image/*");
// Отправляем файл пользователю
echo $image['content'];
?>
|
Пробовал в строке
// Отсылаем заголовки на загрузку файла
header("Content-type: image/*");
писать как мне здесь уже говорили: header("Content-type: image/jpeg");
не помогает.
А как можно проверить, что все-таки записалось в базу? | |
|
|
|
|
|
|
|
для: Костян
(25.05.2008 в 15:16)
| | Вы опять повторяете тот же код, что был и ранее. Интересно, разговор идет о картинках, а комментарий говорит "Извлекаем MP3-файл из базы данных". Затем, еще в первой вашей теме, вам было сказано, что таких типов файла - image/* не существует! Вы хотя бы ошибку потрудились убрать. Если вы используете заголовок, то вы должны знать, что он должен предшествовать любому выводу в браузер! И еще, если вы действительно держите в таблице картинку, и верно ее получаете из базы, то можете не передавать заголовок - вывод у вас будет, потому как вы используете просто echo. | |
|
|
|
|
|
|
|
для: sim5
(25.05.2008 в 15:42)
| | Я извиняюсь, конечно. По поводу МР3 файлов в примечании - это как говорится, на скорость не влияет. Тем более, что именно так было написано в книге по РНР5 авторами, которым принадлежит этот форум. Просто я не исправил эту опечатку. Тип файла в заголовке я менял, об этом я сказал в предыдущем сообщении, просто сейчас я за другим компьютером, на котором нет моих наработок. Пробовал я и совсем без заголовка, та же картина. Единственное, в чем я теперь сомневаюсь - какой тип файла все-таки попал в базу. Хотя загонял я его туда все по той же книге по РНР5. Не могли бы вы сказать, как узнать тип файла, который хранится в БД, | |
|
|
|
|
|
|
|
для: sim5
(25.05.2008 в 15:42)
| | Еще, если не трудно, подскажите по поводу хранения картинок в папке, а в БД - только их названий. В какой-то теме вы об этом говорили Ксении 954, но она захотела хранить картинки именно в БД. Может, эта тема уже обсуждалась, я что-то не нашел пока. Если не обсуждалась - подскажите, где почитать. | |
|
|
|
|
|
|
|
для: Костян
(25.05.2008 в 15:59)
| | Если у вас в базе действительно изображение, то echo "полученное из BLOB поля" обязательно выведет его. Если вы делаете вывод средствами библиотеки GD, и перед передачей заголока (header) уже был вывод в браузер, то вы получите текстовую абракадабру вместо изображения.
Дело хозяйское, как желает Ксения держать изображения - в базе или в папках. Если вас интересует мое мнение, то я бы еще деражал в базе маленькие изображения, например, изображения кнопок или управляющих элементов, для описания интерфейса какой либо программы. Это еще возможно, а вот большие изображения - нет. Вместо этого в базе держать имя файла в поле типа VARCHAR соответсвующей длины (имя плюс расширение).
При этом, если вы загружаете изображения под именами, которые выбирает пользователь, то помещать такие имена следует либо по разным папкам, либо продумать другой механизм, который бы гарантировал исключение перезаписи файла файлом, так как нет 100% гарантии, что имя файла не повторится.
Лучший выход, это именовать (при загрузке на сервер) файлы другим именем, например, по времени, используя, к примеру, функцию time(), может еще добавляя префикс. Вот это действительно то над чем стоит подумать, а поместить имя файла в базу, извлечь его и подставить в атрибут src изображения, это совсем простая задача, ничем не отличающая от помещения и извлечения из базы другой информации. | |
|
|
|
|
|
|
|
для: sim5
(25.05.2008 в 16:36)
| | А по какой причине не стоит держать в базе большие изображения? И где можно посмотреть пример скрипта, который бы помещал изображения в папку, а их имена в базу? На примерах до меня лучше доходит. | |
|
|
|
|
|
|
|
для: Костян
(25.05.2008 в 20:21)
| | Ну например, одно изображение размером 800х600 может занимать 80-100 КБ, а если их много, да еще и большего размера? Зачем засорять базу, если на это существуют каталоги. Если вы не знаете как заносить информацию в базу, вам надо читать, ведь нет конкретных команд в MySQL - записать имя изображения в базу, записать текст в базу, записать цифры в базу и т.д.. Для того чтобы записать изображение в папку на сервере, его нужно закачать, а для этого у пользователя должна быть форма ввода с соответствующим параметром и полем... Зайдите в раздел РНР, там рассмотрению этих вопросов посвящено столько много тем, что без ответа вы не останетесь, просто не хотелось бы переписывать все это еще и в этот раздел. | |
|
|
|
|
|
|
|
для: sim5
(25.05.2008 в 20:56)
| | Спасибо | |
|
|
|
|
|
|
|
для: Костян
(25.05.2008 в 21:08)
| | Что-то у меня поиск по этому сайту не работает. Это у меня одного? | |
|
|
|
|
|
|
|
для: Костян
(26.05.2008 в 12:29)
| | http://softtime.ru/forum/read.php?id_forum=2&id_theme=53860&page=1
Пройдитесь по разделу РНР без поиска, то что вас интересует часто встречается, можно и без поиска найти. А также ознакомтесь с этим: http://www.php.net/manual/ru/features.file-upload.php, и можно воспользоваться вот этим скриптом, для изучения: http://softtime.ru/scripts/upload.php | |
|
|
|
|
|
|
|
для: sim5
(26.05.2008 в 13:47)
| | Огромное спасибо!!! | |
|
|
|