に大きなBLOBを渡すスクリプト(それが重要場合、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>
しかし、FileReadBinary(filepath)
ためColdFusion CFML Reference状態:
注: このアクションはファイルをローカル変数スコープの変数に読み込みます。ログなどの大きなファイルでは使用できません。サーバーを停止させる可能性があるためです。
FileReadBinary(filepath)
を使用しないでください。大きな(0.5 - 1Tb)ファイルをアップロードするにはどうすればよいですか?
とにかくWebインターフェイスから大きなファイルを読み込んではいけません。リクエストはアップロードされるまでに時間切れになります。要求のタイムアウトをどれくらい長くしても問題ありません.FTPサーバーにファイルをアップロードしたり、CFの外にファイルをアップロードしたり、他のプロセスでOracleにロードするなど、さまざまな解決策が必要なようです。 –
私はそれが一般的な使用法ではないことに同意しますが、必ず失敗するとは限りません。私はWebリクエストに対して数百Mbytesの回答を出しているアプリケーションを開発していますが、うまくいきます。もちろん、クライアントとサーバーは同じLANにありますが、この場合は同じであると思います。 – Galcoholic