【发布时间】:2017-10-24 23:53:05
【问题描述】:
我有一个简单的(示例)脚本将文件上传到数据库(Oracle,如果重要的话):
<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 界面加载那么大的文件。请求将在上传之前很久就超时。无论您覆盖请求超时多长时间,这似乎都需要一个不同的解决方案,例如将文件上传到 CF 之外的 FTP 服务器,并让其他一些进程将其加载到 Oracle 中。
-
我同意这不是典型的用法,但肯定不会失败。我正在开发一个为 Web 请求生成数百 MB 答案的应用程序,它运行良好。当然,客户端和服务器在同一个局域网,但我想在这种情况下是一样的。
标签: oracle stored-procedures coldfusion blob