|
|
|
| Проблемма вот в чём: никак не получается либо правельно сохранить либо правельно вывести изображения в БД mysql с помощью php, облазил кучу сайтов прочитал кучу инфы, а в итоги либо поле BLOB содержит несколько байт после обработчика а при выводе даёт крестик вместо картинке, либо выводит набор забавных значков. Пробывал сохранять как в базе так и в файле а в базе пути и название картинки всеравно одно и тоже. Если кто знает обьясните пожалусто в чем здесь фишка, и если нетрудно какойнибуть работуещий пример. Спасибо! | |
|
|
|
|
|
|
|
для: DOB
(17.01.2008 в 02:43)
| | >поле BLOB содержит несколько байт после обработчика
А в смысле после обработчика?
> ибо выводит набор забавных значков
А HTTP-заголовки, сообщающие браузеру, что это изображение вы отправляете? Вы с каким форматом изображений работаете? | |
|
|
|
|
|
|
|
для: cheops
(17.01.2008 в 02:55)
| | jpeg , gif только я так понимаю что выводится не картинка я её код | |
|
|
|
|
|
|
|
для: DOB
(17.01.2008 в 03:15)
| | Отправляется HTTP-заголовок
<?php
header("Content-type: image/jpeg");
?>
|
перед выводом содержимого JPEG-изображения? | |
|
|
|
|
|
|
|
для: cheops
(17.01.2008 в 02:55)
| | "обработчик" я имелл в виду программу обрабатываящу форму с информацией | |
|
|
|
|
|
|
|
для: DOB
(17.01.2008 в 03:19)
| | В обработчике нет пробелов (или других символов) после ?> или перед <? и вообще в обработчике выводится только изображение и ничего больше? | |
|
|
|
|
|
|
|
для: cheops
(17.01.2008 в 03:34)
| | >В обработчике нет пробелов (или других символов) после ?> или перед <? и вообще в обработчике выводится только изображение и ничего больше?
Я имел ввиду программу на ввод информации в базу,
а на вывод проверил всё чисто. | |
|
|
|
|
|
|
|
для: DOB
(17.01.2008 в 04:09)
| | . | |
|
|
|
|
|
|
|
для: cheops
(17.01.2008 в 02:55)
| | Вот например с текстовами полями всё понятно там содиржимое поля заносится в переменную и выдается браузеру, а вот с картинками как не крутил не выходит
$res=mysql_query("SELECT * from fotos")
or die("SQL ERROR in line ".__LINE__.", function mysql_query");
$image=mysql_result($res, 1, foto);
header("Content-type: image/gif");
echo $image;
|
Вот что сдесь не правильно? | |
|
|
|
|
|
|
|
для: DOB
(17.01.2008 в 03:44)
| | Поле foto является типа BLOB перед вставкой значений в него проводите экранирование символов при помощи функции mysql_real_escape_string(). | |
|
|
|
|
|
|
|
для: cheops
(17.01.2008 в 04:32)
| | >экранирование символов при помощи функции mysql_real_escape_string().
Уменя в общей сложности получился следующий код на ввод информации в БД, подскажите там всё правильно если да зна чит проблемма с выводом изображения!
<?
$link = mysql_connect("localhost","registr","12345") OR die("Incorrect username or password");
mysql_select_db("registr") OR die ("Access denied !");
// Добавление файла в таблицу
function uploadFile( $filename, $mimetype, $tmp_name, $filesize ) {
if ( $file = @fopen( $tmp_name, "rb" ) ) {
// Прочитать содержимое временного файла
$filebody = fread($file, $filesize);
fclose( $file );
// Удалить временный файл - сам сервер может об этом забыть
unlink( $tmp_name );
// Заэкранировать символы, непонятные для MySQL
$filebody = mysql_real_escape_string($filebody);
// Вставить запись в таблицу
$query="insert into filetable (mimetype,filename, filesize, filebody) values ('$mimetype', '$filename',
'$filesize', '$filebody')";
$result=mysql_query ($query) or die ("Ошибка ввода информации в таблицу!");
// Проверяем, что получилось
if ( $result ) {
$result =
mysql_query("SELECT MAX(fileid) AS id FROM filetable");
if ($row = mysql_fetch_array($result))
return $row[id]; // Занесено, возвращаем идентификатор
} else {
// print mysql_error()."<br>\n";
// Ошибка занесения в БД
}
} else {
// Ошибка загрузки файла
}
}
mysql_close($link);
?>
<!--
поле MAX_FILE_SIZE ограничивает допустимый размер файла (в байтах)
-->
<form METHOD="POST" ENCTYPE="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="1200000">
<input type="hidden" name="filename" value="">
<input type="hidden" name="MAX_FILE_SIZE" value="1200000">
Файл: <input type=file name=myfile>
<input type=submit name=upload value="Загрузить файл">
</form>
|
| |
|
|
|
|
|
|
|
для: DOB
(17.01.2008 в 05:20)
| | А сама функция uploadFile() как вызывается? | |
|
|
|
|
|
|
|
для: cheops
(17.01.2008 в 15:02)
| | Вывод происходит вот так:
<?
$link = mysql_connect("localhost","registr","12345") OR die("Incorrect username or password");
mysql_select_db("registr") OR die ("Access denied !");
function getFileByName( $fname ) {
// Извлечение всех полей для файла с заданным именем.
// При этом дополнительно преобразуем время обновления
// из формата MySQL TIMESTAMP (YYYYMMDDhhmmss)
// в число секунд от начала эры UNIX.
$result = mysql_query( <<<ENDQUERY
SELECT *, UNIX_TIMESTAMP(updtime) AS updtime1
FROM filetable WHERE filename='$fname'
ENDQUERY
);
return mysql_fetch_array($result);
}
// Получение имени файла
$fname = substr( filetable(PATH_INFO));
// Берем файл из базы
$row = getFile( $fname );
if ( !$row ) {
// Если такого файла нет - возвращаем клиенту код ошибки
echo "Фаил не обнаружен";
} else {
// Время, когда файл был загружен.
// Преобразуется из формата UNIX_TIMESTAMP
// в формат RFC 822, в котором дату должен возвращать сервер.
$lastmodif = date("r", $row[updtime1]);
// Эти 2 поля позволяют кэшировать переданный файл.
// Разрешить кеширование
header("Cache-Control: public");
// Передать время модификации
header("Last-Modified: ".$lastmodif);
header("Content-type: ".$row[mimetype]);
// Передать тело файла
print $row[filebody];
}
mysql_close($link);
?>
|
| |
|
|
|
|
|
|
|
для: DOB
(17.01.2008 в 15:54)
| | Люди ну помагите чем смогу отблогадарю?
P.S. - Очень надо! | |
|
|
|