我有一個簡單的(例如)腳本文件上傳到數據庫(Oracle中,如果它的問題):傳遞大的BLOB存儲過程
<cfscript>
param string filename;
if (FileExists(filename))
{
result = new StoredProc(
datasource = "ds",
procedure = "FILE_UPLOAD",
result = "NA",
parameters = [
{ value = FileReadBinary(filename), type = "in", cfsqltype = "CF_SQL_BLOB" }
]
).execute();
}
</cfscript>
然而,ColdFusion CFML Reference國FileReadBinary(filepath)
:
注意: 此操作將文件讀取到本地變量作用域中的變量中。它不適用於諸如日誌之類的大文件,因爲它們可以關閉服務器。
如果我不應該使用FileReadBinary(filepath)
,我應該如何上傳一個大的(0.5 - 1Tb)文件?
不管怎樣,您都不應該通過Web界面加載大型文件。該請求在上傳之前會超時。無論您重寫請求超時的時間長短如何,這似乎都需要一種不同的解決方案,例如將文件上傳到FTP服務器,而不是CF之外,並讓其他一些進程將其加載到Oracle中。 –
我同意這不是一個典型的用法,但不一定會失敗。我正在開發一個應用程序,爲Web請求生成幾百MB的答案,並且工作正常。當然,客戶端和服務器都在同一個局域網中,但我認爲在這種情況下它是一樣的。 – Galcoholic