Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > загрузка изображения


Автор: kid_a 17.12.2007, 09:33
тип поля blob. при выводе из БД - изображений нет (белые перечеркнутые квадраты). что исправить? заранее спасибо

Код

<?php
    $hostName = "localhost";  
    $userName = "user";  
    $password = "";  
    $databaseName = "base"; 

if (!($link=mysql_connect($hostName,$userName,$password))) 
    {
    printf("Ошибка при соединении с MySQL.\n");
    exit();
    }
if (!mysql_select_db($databaseName, $link)) 
    {
    printf("База данных недоступна.");
    exit();
    }
?>
<form enctype='multipart/form-data' method=post> 
<input type="file" name="image"><br> 
<input type=submit value='Загрузить'> 
</form> 
<?php 

   if(!empty($_FILES)) 
  { 
    
    if(substr($_FILES['image']['type'],0,5) == 'image') 
    { 
    
      $content = file_get_contents($_FILES['image']['tmp_name']); 
     
      unlink($_FILES['image']['tmp_name']); 

      $content = mysql_escape_string($content); 
      
      $query = "INSERT INTO image VALUES(NULL, 
                                         '".$_FILES['image']['name']."', 
                                         '$content')"; 
      if(mysql_query($query)) 
      { 
   
        echo "<HTML><HEAD> 
          <META HTTP-EQUIV='Refresh' CONTENT='0; URL=$_SERVER[PHP_SELF]'> 
             </HEAD></HTML>"; 
      } else exit(mysql_error()); 
    } 
  } 


  $query = "SELECT * FROM image"; 
  $img = mysql_query($query); 
  if(!$img) exit(mysql_error()); 

  if(mysql_num_rows($img) > 0) 
  { 
    while($image = mysql_fetch_array($img)) 
    { 
      echo "<img src=get.php?id_image=$image[id_image]>&nbsp;"; 
    } 
  } 
  echo "<br><br>"; 

?> 

Автор: Feldmarschall 17.12.2007, 10:38
Я думаю, надо испраить, в первую очередь, подход.
Не ломать голову над целым куском кода, а разделить задачу на этапы, и проверить прохождение картинки на каждом из них.
Закачали на сервер? проверяем - закачалось ли.
записали в базу? проверяем - записалось ли.
получаем из базы? проверяем - получилось ли (заодно сравниваем с той картинкой, которая закачалась).
и так далее.

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

Автор: kid_a 17.12.2007, 11:16
неправильно заносится в базу .при просмотре через mysql query - field viewer - изображения нет.

как можно исправить код: сохраняем в определенную директорию на сервере, а в базу пишем только ссылку на это изображение?

Автор: skyboy 17.12.2007, 11:43
Цитата(kid_a @  17.12.2007,  10:16 Найти цитируемый пост)
сохраняем в определенную директорию на сервере, а в базу пишем только ссылку на это изображение

истинно так.

Автор: kid_a 17.12.2007, 11:45
если не сложно, приведите пожалуйста пример

Автор: MoLeX 17.12.2007, 11:47
Цитата(kid_a @  17.12.2007,  11:16 Найти цитируемый пост)
... а в базу пишем только ссылку на это изображение?

конечно...

Добавлено через 3 минуты и 10 секунд
код привести нету ни времени не средств, теория:
1. запихиваем картинку в папку images в корне сайта и переименовываем ее если не устраивает имя
2. в бд можно записать например полный путь (http://site.site/images/номер_картинки.расшерение) или ее номер и расшерение, а в потом сылаться <img src="./images/номер_картинки.расшерение">

ну вроде так...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)