要使用coldfusion将文件插入到文件流中,首先,我必须将文件读入二进制变量,然后我必须将其插入到SQL中。当我使用大文件(1gig)执行此操作时,系统将耗尽内存。
有没有人能够成功地做到这一点?
谢谢!
答案 0 :(得分:2)
虽然您可能通过增加管理员为CF分配的RAM量来解决这个问题,但我建议CF不适合这个,并且至少有两种方法可以解决这个问题。< / p>
在不了解您的系统的情况下,我会提供这样的通用建议:不要在db中存储文件(尤其是那个大小的文件)。而是在DB中存储对它们的引用并将它们存储在文件系统上。如果要从Web访问它们,请将它们存储在Web服务器上。
如果你确实需要将它们存储在数据库中,我会将文件移动到SQL服务器并在那里插入,而不是使用CF来执行它。例如,您可以使用CF将文件FTP到SQL服务器,然后使用文件位置调用存储过程(或类似文件)来执行插入。
答案 1 :(得分:2)
您不会使用CF或任何其他环境将非常大的文件读入变量。你使用流。我有一篇文章解释了如何在C#,Download and Upload images from SQL Server via ASP.Net MVC和使用FILESTREAM存储选项FILESTREAM MVC: Download and Upload images from SQL Server的后续工作中执行此操作。您可以将相同的技术应用于CF。
答案 2 :(得分:0)
如果您使用的是较旧版本的Coldfusion(9之前版本)或非64位版本,则无论如何都可能无法为Coldfusion服务器分配超过1.5 GB的ram。您可能需要编写一个Java或C#类来处理文件流到数据库并将其包含为Java或.Net对象。
我认为Adobe已经用Coldfusion 9解决了这个问题,但是自从我处理了这么大的文件以来已经有一段时间了。