Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Загрузка/выгрузка картинок, Oracle


Автор: O_Irina 7.10.2008, 12:15
Доброго времени суток!

Возник вопрос. Задача - из интерфейса загружать и просматривать фотографии сотрудников в оракловую базу.
Фотографии в формате jpeg.

Загрузку делаю с помощью такого кода:

Код

if(!empty($_FILES['filename']['tmp_name']) && $_FILES['filename']['tmp_name'] != 'none' )
{
           if(($fh = fopen($_FILES['filename']['tmp_name'], 'r')) == false)
                die("Невозможно открыть временный файл!");
            if(($contents = fread($fh, $_FILES['filename']['size'])) == '')
                die("Невозможно прочитать временный файл!");
}
$conn = oci_new_connect ( 'test', 'test', 'test' );
$blob = oci_new_descriptor($conn, OCI_D_LOB);
$sql = "update table set field1 = :photo where field2 = 1"; //обновляю поле с фото для конкретного сотрудника
$stid = oci_parse($conn, $sql);
oci_bind_by_name($stid, ":photo", $blob, -1, OCI_B_BLOB);
$blob->writeTemporary($contents);
$r = oci_execute($stid, OCI_DEFAULT);
oci_commit($conn);
$blob->close();
oci_free_statement($stid);
oci_close($conn);



Загрузка идет, но записывается что-то не то.. 
Если смотрю средствами toad содержимое загруженного поля в шестнадцатеричном виде, и содержимое исходного jpeg-файла - результаты разные.

Что может быть не так в загрузке?

Заранее спасибо!

Автор: O_Irina 8.10.2008, 12:15
Все, разобралась сама smile

Проблема была в неправильном использовании функции writeTemporary.
Сделала следующее:
Код

$blob->writeTemporary($contents,OCI_TEMP_BLOB);


И все ок - файлы загружаются корректно.

Автор: kuler 26.5.2010, 14:28
 smile 

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