Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вывод фотографий из базы данных
 
 автор: Саша   (03.07.2005 в 15:08)   письмо автору
 
 

Фото храниться в бд (блоб)
Можно ли это фото вытащив из бд сразу как ни будь вывести в браузер не сохраняя его в файлe?

   
 
 автор: cheops   (03.07.2005 в 16:29)   письмо автору
 
   для: Саша   (03.07.2005 в 15:08)
 

Да, для этого необходимо создать файл view.php в котором вы будете выводить изоражения - в нём обязательно следует отослать HTTP-заголовок Content-type, который сообщит, что далее идёт изображение, а не текст
<?php
  
// Посылаем заголовок, что это изображение
  
header ("Content-type: image/jpeg"); 
  
// Извлекаем изображение из базы данных в $result['photo']
  // .... код ....
  
echo $result['photo'];
?>

Следует сделать так, чтобы файл выдавал изображения, по уникальному номеру записи в таблице, т.е. view.php?id=2345 или view.php?id=345.
SELECT * FROM tbl WHERE id=$_GET[id]

Далее в том месте где вам нужно вывести изображение помещайте код
<img src=http://www.mysite.ru/view.php?id=2345><br>
<img src=http://www.mysite.ru/view.php?id=345><br>

   
 
 автор: Саша   (05.07.2005 в 11:14)   письмо автору
 
   для: cheops   (03.07.2005 в 16:29)
 

Фотография добавляеться вот таким образом

$file_content = addslashes (fread($file_open,$_FILES['filename']['size']));

если сделать

echo $row['filecontent'];

то все хорошо, а если

echo stripslashes($row['filecontent']);

то пустая картинка. В чем может быть проблема?

   
 
 автор: cheops   (05.07.2005 в 12:45)   письмо автору
 
   для: Саша   (05.07.2005 в 11:14)
 

Картинка является бинарной последовательностью - её не нужно преобразовывать при выводе функцией stripslashes(), иначе она "побъётся".

   
 
 автор: Саша   (05.07.2005 в 13:03)   письмо автору
 
   для: cheops   (05.07.2005 в 12:45)
 

Просто есть картинка, она как-то не полностью загружается, в базе та половина отображается не правильно (я через фронт смотрю), как тогда можно избавиться от подобных глюков. Я прочитал у вас, что сам апач любит перекодировать и нужно вставить строчку в конф
<Location />
CharsetRecodeMultipartForms Off
</Location>
Я вставил, но сам апач ее ошибочной воспринимает

   
 
 автор: cheops   (05.07.2005 в 13:09)   письмо автору
 
   для: Саша   (05.07.2005 в 13:03)
 

Вместо строки
<?php
$file_content 
addslashes (fread($file_open,$_FILES['filename']['size']));
?>

попробуйте использовать
<?php
$file_content 
mysql_escape_string(fread($file_open,$_FILES['filename']['size']));
?>

обычно поступают именно таким образом.

   
 
 автор: Саша   (05.07.2005 в 14:58)   письмо автору
 
   для: cheops   (05.07.2005 в 13:09)
 

тоже самое
возможно дело в самих фото... Т. е. половина загружается, а вторая нет. А может быть сам блоб надо указать длину 3 ил 4? ... Создается впечатление, что оно просто по размерам не вписывается и часть отбарасывает

   
 
 автор: cheops   (05.07.2005 в 15:10)   письмо автору
 
   для: Саша   (05.07.2005 в 14:58)
 

А вполне может быть... Вы какой BLOB используете?
BLOB - 64 Кб 
MEDIUMBLOB - 16 Мб 
LONGBLOB - 4 Гб 

   
 
 автор: Саша   (05.07.2005 в 15:28)   письмо автору
 
   для: cheops   (05.07.2005 в 15:10)
 

о, точно, так и есть, по размерам не подходило :-)
теперь все ок, спасибо!

   
 
 автор: Byte   (08.07.2005 в 01:32)   письмо автору
 
   для: Саша   (05.07.2005 в 15:28)
 

Народ, где грабли?


<?php 
//header ("Content-type: image/jpeg"); 
if ((isset($tname)) && (isset($id)) && (isset($fname)))
{  
// Посылаем заголовок, что это изображение 
include "cnct.php";
connect();
$res=@mysql_query("select * from laser_cart where cart_mod='Q3962A';");
  
// Извлекаем изображение из базы данных в $result['photo'] 
  // .... код .... 
$result=mysql_fetch_array($res);
echo 
$res[8]; 
?> 




вместо картинки только место под картинку

помогите плз

   
 
 автор: cheops   (08.07.2005 в 02:12)   письмо автору
 
   для: Byte   (08.07.2005 в 01:32)
 

А откуда появилось $res[8], если функция mysql_fetch_array() возвращает результат в массив $result?

   
 
 автор: Byte   (08.07.2005 в 05:14)   письмо автору
 
   для: cheops   (08.07.2005 в 02:12)
 

а, это я позабыл назад исправить. голова кругом просто идет, вот и пытался делать на всякий случай даже абсурдные вещи. конечно должно быть $result[8]. 8 - номер поля в котором храниться фото. и еще header на самом деле не закоментирован

   
 
 автор: Byte   (08.07.2005 в 05:37)   письмо автору
 
   для: Byte   (08.07.2005 в 05:14)
 

Все, всем спасибо. Как всегда сам нашел ошибку, но благодаря тому что сюда написал :).

   
 
 автор: Саша   (12.07.2005 в 12:14)   письмо автору
 
   для: Byte   (08.07.2005 в 05:37)
 

Еще один вопросик
Есть картинка размером 200х200. Есть ли функция, которая обрезает ее до 50х50. Мне нужно что б в БД хранилось одна большая и ее маленькая копия, но копия делалась автоматически с большой?

   
 
 автор: BAHO   (12.07.2005 в 12:41)   письмо автору
 
   для: Саша   (12.07.2005 в 12:14)
 

функция с софттаймовской галереи...


<?
function resizeimg($filename$smallimage$w$h
  { 
  
$ratio=$w/$h
  
$size_img=getimagesize($filename); 
  if((
$size_img[0]<$w) && ($size_img[1]<$h)) return true
  
$src_ratio=$size_img[0]/$size_img[1]; 
  if(
$ratio<$src_ratio$h=$w/$src_ratio
  else 
$w=$h*$src_ratio
  
$dest_img=imagecreatetruecolor($w,$h);   
  
$white=imagecolorallocate($dest_img255255255);        
  if(
$size_img[2]==2$src_img=imagecreatefromjpeg($filename);                       
  elseif(
$size_img[2]==1$src_img=imagecreatefromgif($filename);                       
  elseif(
$size_img[2]==3$src_img=imagecreatefrompng($filename); 
  
imagecopyresampled($dest_img$src_img0000$w$h$size_img[0], $size_img[1]);                 
  if(
$size_img[2]==2imagejpeg($dest_img$smallimage);                       
  elseif(
$size_img[2]==1imagegif($dest_img$smallimage);                       
  elseif(
$size_img[2]==3imagepng($dest_img$smallimage); 
  
imagedestroy($dest_img); 
  
imagedestroy($src_img); 
  return 
true;          
  }   
?>

   
 
 автор: Byte   (14.07.2005 в 19:29)   письмо автору
 
   для: BAHO   (12.07.2005 в 12:41)
 

Дарова всем,

некоторые картинки после изменения размеров становятся чернобелыми, подскажите почему. Да, все картинки с глубиной цвета 24бита. Спасибо.

   
 
 автор: Byte   (14.07.2005 в 22:10)   письмо автору
 
   для: Byte   (14.07.2005 в 19:29)
 

ауууу, дайте идейку :)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования