lob->load

(No version information available, might be only in CVS)

lob->load — Возвращает содержимое объекта LOB

Описание

string lob->load ( void )

Возвращает содержимое объекта LOB. Помните о том, что не всякий LOB может уместиться в переменной, на это влияет директива memory_limit. Поэтому, в большинстве случаев этот метод может быть заменен oci_lob_read(). В случае ошибки lob->load() вернет FALSE.

Замечание: В версиях PHP ниже 5.0.0 эта функция называлась ociloadlob(). В PHP 5.0.0 и выше ociloadlob() является алиасом oci_lob_load(), поэтому вы можете продолжать использовать это имя, однако это не рекомендуется.

Коментарии

I'll give you example how to download a file from db without storing it on server's FS:
It works like this - point yor browser to index.php?name=file.ext
Just make sure that file "file.ext" exists in your db!

Code:

<?php

 $dbConnection
=ocilogon('user','pass','data.world'); //login stuff
 
$sql_SelectBlob='select document_body,filename from tdocuments where id=1'//selecting a blob field named 'document_body' with id = 1
 
$statement=OCIParse($dbConnection,$sql_SelectBlob);

 
OCIExecute($statement) or die($sql_SelectBlob.'<hr>');

if(
OCIFetch($statement)) //if file exists
 
{
 
$a=OCIResult($statement,"DOCUMENT_BODY");
 }
header('Content-type: application/octet-stream;');
header('Content-disposition: attachment;filename='.$_GET['name']);

print 
$a->load();
//browser promts to save or open the file
?>

Have fun!
2006-10-25 16:34:29
http://php5.kiev.ua/manual/ru/function.oci-lob-load.html
Ps. To prevent IE errors like 'File not found!' after downloading file from db I recommend to add next two lines into header:
header('Cache-Control: max-age=0');
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

With this, IE will open any file normally :)
2006-12-25 15:49:13
http://php5.kiev.ua/manual/ru/function.oci-lob-load.html
Reading a OCI-Lob by using the load() function will return only 2k chars, so you miss part of its contents.

For example:
<?php

$sql 
"BEGIN :res := getACLOB(id).getclobval(); END;";             
$stmt oci_parse($conn$sql);
$resVal OCINewDescriptor($connOCI_D_LOB);
oci_bind_by_name($stmt":res"$resVal, -1OCI_B_CLOB);
oci_execute($stmt);

$foo $resVal->load();
// $foo will contain only 2k chars

// the following will neither work
$foo $resVal->read$resVal->size() );
// $foo will contain only 2k chars

?>

Use this instead:

<?php

$sql 
"BEGIN :res := getACLOB(id).getclobval(); END;";             
$stmt oci_parse($conn$sql);
$resVal OCINewDescriptor($connOCI_D_LOB);
oci_bind_by_name($stmt":res"$resVal, -1OCI_B_CLOB);
oci_execute($stmt);

$foo "";
                   
while(!
$resVal->eof()){
   
$foo .= $resVal->read(2000);
}                   
// $foo will contain full contents of the CLOB
?>
2010-02-03 18:09:11
http://php5.kiev.ua/manual/ru/function.oci-lob-load.html

    Поддержать сайт на родительском проекте КГБ