我有一个简单的(例如)脚本文件上传到数据库(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