Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: усекается изображение при вставке в БД MySQL в поле mediumblob

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
shurik_7866
Отправлено: 29 Июня, 2015 - 18:25:44
Post Id


Новичок


Покинул форум
Сообщений всего: 52
Дата рег-ции: Май 2015  


Помог: 0 раз(а)




При загрузке изображения в базу MySQL усекается изображение. То есть если после загрузки в базу выгрузить обратно средствами PhpMyAdmin то низ картинки будет обрезан. И в базе при просмотре через PhpMyAdmin размер меньше чем оригинал.

Подскажите кто знает или догадивается в чем дело.

Ниже привожу SQL скрипт создания таблицы, HTML код для выбора изображения, PHP код для вставки изображения в базу и изображение - выгруженное с базы

Скрипт создания таблицы
CODE (SQL):
скопировать код в буфер обмена
  1.  CREATE TABLE images(
  2.     image_id integer AUTO_INCREMENT PRIMARY KEY
  3.    ,filename varchar(200) NOT NULL
  4.    ,mime_type varchar(50) NOT NULL
  5.    ,file_size integer NOT NULL
  6.    ,image_data mediumblob NOT NULL
  7. );


код HTML для выбора изображения
CODE (html):
скопировать код в буфер обмена
  1. <form method="post" enctype="multipart/form-data">
  2. <input type="hidden" name="MAX_FILE_SIZE" value="10500000"/>
  3. аватар: <input type="file" name="user_pic" accept="image/jpeg" size="30"/>
  4. <input type="submit" name="to_reg" value="загрузить изображение">
  5. </form>


код PHP для вставки изображения в базу
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3.   $error_code=isset($_FILES["user_pic"]["error"]) ? $_FILES["user_pic"]["error"]: -1;
  4.   if ($error_code == 0){
  5.         if (@is_uploaded_file($_FILES["user_pic"]["tmp_name"])){
  6.           if (@getimagesize($_FILES["user_pic"]["tmp_name"])){
  7.                 $filename = $_FILES["user_pic"]["name"];
  8.                 $mime_type = $_FILES["user_pic"]["type"];
  9.                 $file_size = $_FILES["user_pic"]["size"];              
  10.                 $image_data = file_get_contents($_FILES["user_pic"]["tmp_name"]);
  11.                                                  
  12.                 $filename=mysql_real_escape_string($filename);
  13.                 $mime_type=mysql_real_escape_string($mime_type);
  14.                 $image_data=mysql_real_escape_string($image_data);
  15.         $query = "insert into images(filename, mime_type, file_size, image_data) ".
  16.                           "values('{$filename}', '{$mime_type}', {$file_size}, '".$image_data."');";
  17.                                          
  18.                 mysql_query($query)
  19.                 or die("<p>Ошибка при вставке в таблицу images: ".mysql_error()."</p>");
  20.           }
  21.           else{//error_block
  22.                 $error_code = -1;
  23.                 $error_msg = "Ошибка: загруженный файл не является изображением";                              
  24.           }
  25.         }
  26.         else{//error_block
  27.       $error_code = -1;
  28.           $error_msg = "Ошибка: файл был загружен не через HTTP POST";         
  29.         }
  30.        
  31.   }
  32.  ?>

Прикреплено изображение (Нажмите для увеличения)
img_II.jpg
 
 Top
esterio
Отправлено: 29 Июня, 2015 - 18:43:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




shurik_7866
Мой Вам совет: не сохраняйте ихображенния в базе. Храните в файлах, а в базе только ссилки на них

(Отредактировано автором: 29 Июня, 2015 - 18:45:18)

 
 Top
shurik_7866
Отправлено: 01 Июля, 2015 - 18:03:58
Post Id


Новичок


Покинул форум
Сообщений всего: 52
Дата рег-ции: Май 2015  


Помог: 0 раз(а)




Ошибка связана с какими то настройками моего локального сервера MySQL или PHP или Apache поскольку на хостинг сервере изображение загружается нормально.
Буду очень признателен если кто-то подскажет какие настройки нужно подправить
(Добавление)
Теперь наблюдается следующая ошибка, уже при попытке получить из базы и отобразить изображение (на хостинг сервере где изображение загружено полностью)
CODE (htmlphp):
скопировать код в буфер обмена
  1. http://os7866.co.ua/scripts/get_img.php?image_id=1


При загрузке через FireFox выдает ошибку "Изображение 'http://os7866.co.ua/scripts/get_img.php?image_id=1' не может быть загружено так как содержит ошибки.

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

Ниже привожу скрипт по загрузке картинки
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. require_once "../../param.php";
  3.  
  4. mysql_connect(DB_HOST, DB_USER, DB_PASSW) or
  5. die("<p>Ошибка подключения к серверу MySQL: ".mysql_error()."</p>");
  6.  
  7. mysql_select_db(DB_NAME) or
  8. die("<p>Ошибка подключения к базе данных: ".mysql_error()."</p>");
  9.  
  10. if (!isset($_REQUEST["image_id"])) die("<p>Ошибка: не указано image_id</p>");
  11. $image_id = $_REQUEST["image_id"];
  12.  
  13. $query = sprintf("select * from images where image_id = %d;", $image_id);
  14. $result = mysql_query($query);
  15. if (!$result) die("<p>Ошибка при выполнении запроса: ".mysql_error()."</p>");
  16. if (mysql_num_rows($result) == 0) die("<p>Отсутствует изображение с image_id = {$image_id}</p>");
  17. $image = mysql_fetch_array($result);
  18.  
  19.  
  20. header('Content-type: ' . $image['mime_type']);
  21. header('Content-length: ' . $image['file_size']);
  22. echo $image["image_data"];
  23. ?>

(Отредактировано автором: 01 Июля, 2015 - 18:07:40)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB