При загрузке изображения в базу MySQL усекается изображение. То есть если после загрузки в базу выгрузить обратно средствами PhpMyAdmin то низ картинки будет обрезан. И в базе через PhpMyAdmin размер меньше чем оригинал. Подскажите кто знает или догадивается в чем дело. Ниже привожу SQL скрипт создания таблицы, HTML код для выбора изображения, PHP код для вставки изображения в базу. скрипт создания таблицы Код (PHP): create table images( image_id integer AUTO_INCREMENT PRIMARY KEY ,filename varchar(200) not null ,mime_type varchar(50) not null ,file_size integer not null ,image_data mediumblob not null ); код HTML для выбора изображения Код (PHP): <form method="post" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="10500000"/> аватар: <input type="file" name="user_pic" accept="image/jpeg" size="30"/> <input type="submit" name="to_reg" value="загрузить изображение"> </form> код PHP для вставки изображения в базу Код (PHP): <?php $error_code=isset($_FILES["user_pic"]["error"]) ? $_FILES["user_pic"]["error"]: -1; if ($error_code == 0){ if (@is_uploaded_file($_FILES["user_pic"]["tmp_name"])){ if (@getimagesize($_FILES["user_pic"]["tmp_name"])){ $filename = $_FILES["user_pic"]["name"]; $mime_type = $_FILES["user_pic"]["type"]; $file_size = $_FILES["user_pic"]["size"]; $image_data = file_get_contents($_FILES["user_pic"]["tmp_name"]); $filename=mysql_real_escape_string($filename); $mime_type=mysql_real_escape_string($mime_type); $image_data=mysql_real_escape_string($image_data); $query = "insert into images(filename, mime_type, file_size, image_data) ". "values('{$filename}', '{$mime_type}', {$file_size}, '".$image_data."');"; mysql_query($query) or die("<p>Ошибка при вставке в таблицу images: ".mysql_error()."</p>"); } else{//error_block $error_code = -1; $error_msg = "Ошибка: загруженный файл не является изображением"; } } else{//error_block $error_code = -1; $error_msg = "Ошибка: файл был загружен не через HTTP POST"; } } ?> PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
Ошибка связана с какими то настройками моего локального сервера MySQL или PHP или Apache поскольку на хостинг сервере изображение загружается нормально. Буду очень признателен если кто-то подскажет какие настройки нужно подправить Добавлено спустя 2 минуты 49 секунд: Теперь наблюдается следующая ошибка, уже при попытке получить из базы и отобразить изображение (на хостинг сервере где изображение загружено полностью) 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 просто вместо изображения отображается маленький квадратик Подскажите кто знает, с чем связана ошибка. Ниже привожу скрипт по загрузке картинки Код (Text): <?php require_once "../../param.php"; mysql_connect(DB_HOST, DB_USER, DB_PASSW) or die("<p>Ошибка подключения к серверу MySQL: ".mysql_error()."</p>"); mysql_select_db(DB_NAME) or die("<p>Ошибка подключения к базе данных: ".mysql_error()."</p>"); if (!isset($_REQUEST["image_id"])) die("<p>Ошибка: не указано image_id</p>"); $image_id = $_REQUEST["image_id"]; $query = sprintf("select * from images where image_id = %d;", $image_id); $result = mysql_query($query); if (!$result) die("<p>Ошибка при выполнении запроса: ".mysql_error()."</p>"); if (mysql_num_rows($result) == 0) die("<p>Отсутствует изображение с image_id = {$image_id}</p>"); $image = mysql_fetch_array($result); header('Content-type: ' . $image['mime_type']); header('Content-length: ' . $image['file_size']); echo $image["image_data"]; ?>
Через fiddler сравни то что отдаёт твой браузер и то что отдаёт сервер если запросить изображение с диска