2010-02-11 37 views
0

我正在使用php腳本將存儲在服務器的臨時目錄中的二進制文件保存爲oracle中的blob。它工作正常的文件大小< 7MB,任何大於此,它只是不會保存。 php的帖子和文件上傳限制是32MB。腳本在lob-> savefile($ tempFile)處完全停止。一般代碼如下:PHP限制文件大小在oracle中保存blob

$ STID = oci_parse($康恩,「UPDATE FILE_UPLOAD SET file_blob = EMPTY_BLOB(),狀態= 'S',temp_file = '{$ TEMPFILE}' WHERE FILE_UPLOAD_ID =:FILE_ID RETURNING file_blob INTO :file_blob「); oci_bind_by_name($ stid,':file_blob',$ lob,-1,OCI_B_BLOB);
oci_bind_by_name($ stid,':file_id',$ fileID);
oci_execute($ stid,OCI_DEFAULT);

如果($ lob-> SAVEFILE($ TEMPFILE))//這是它停止
{
oci_commit($ conn);在
}
其他
{
logAction( 「狀態」, 「無法上傳的Blob」); //不在這裏
}

任何意見,將不勝感激。

問候,

安格斯

回答

1

好這個問題已經很多調試完畢後得到解決,等等 答案此規定:

我在那裏直接訪問臨時文件,即

$tempFileN= $_FILES['Filedata']['tmp_name']

和保存該,我將其替換爲:

<br/> 
$contents = file_get_contents($_FILES['Filedata']['tmp_name']);<br/> 
<br/> 

和我在那裏保存使用SAVEFILE方法團塊,我把它改爲:

<br/> 
$lob->save($contents)<br/> 
<br/> 

它現在。

1

您可以啓用跟蹤會話,並查看跟蹤文件。 也許它會包含導致問題的錯誤。

EXECUTE DBMS_SESSION.SESSION_TRACE_ENABLE(waits => TRUE, binds => FALSE);

以下腳本將返回當前會話寫入的跟蹤文件的路徑。它返回是否啓用跟蹤的路徑。

​​