SQL Filestream и Coldfusion. Чтение очень больших файлов в переменную - PullRequest
3 голосов
/ 25 апреля 2011

Чтобы вставить файл в файловый поток с помощью coldfusion, сначала я должен прочитать файл в двоичную переменную, а затем вставить его в SQL. Когда я делаю это с большим файлом (1 гига), системе не хватает памяти.

Кто-нибудь смог сделать это успешно?

Спасибо!

Ответы [ 3 ]

2 голосов
/ 26 апреля 2011

Вы не читаете очень большие файлы в переменные, используя CF или любую другую среду.Вы используете потоки.У меня есть статья, объясняющая, как сделать это в C #, Загрузка и выгрузка изображений с SQL Server через ASP.Net MVC , а также продолжение, в котором используется опция хранилища FILESTREAM FILESTREAM MVC: Загрузка и выгрузка изображенийиз SQL Server .Вы можете применить те же методы к CF.

2 голосов
/ 25 апреля 2011

Хотя вы, вероятно, могли бы добиться этого, увеличив объем оперативной памяти, выделенной для CF в администраторе, я бы предположил, что CF не является подходящим инструментом для этого, и есть как минимум два способа обойти это ..

Не зная ничего о вашей системе, я бы предложил такой общий совет: не храните файлы (особенно такого размера) в БД.Вместо этого сохраните ссылку на них в БД и сохраните их в файловой системе.Если к ним обращаются из Интернета, сохраните их на веб-сервере.

Если вам действительно нужно сохранить их в БД, я бы переместил файл на сервер SQL и выполнил бы вставку туда, а нечем использовать CF, чтобы сделать это.Например, вы можете использовать CF для передачи файла по FTP на сервер SQL, а затем вызвать хранимую процедуру (или аналогичную) с расположением файла, чтобы выполнить вставку.

0 голосов
/ 27 апреля 2011

Если вы используете более старую версию Coldfusion (до 9) или не 64-битную версию, у вас могут возникнуть проблемы с выделением более 1,5 ГБ оперативной памяти на сервер Coldfusion. Вам может потребоваться написать класс на Java или C #, который обрабатывает поток файлов в базе данных и включает его как объект Java или .Net.

Я думал, что Adobe решила эту проблему с Coldfusion 9, но прошло уже много времени с тех пор, как я работал с такими большими файлами.

...