Я не могу написать InputStream
(содержать содержимое содержимого) в базу данных как массив byte
.InputStream to byte array вызывает исключение OutOfMemory
У меня был следующий код, но с большими файлами он sthrows OutOfMemoryExceptoin
.
var postedFile = HttpContext.Current.Request.Files["file"];
byte[] fileContent;
using (MemoryStream ms = new MemoryStream())
{
postedFile.InputStream.CopyTo(ms); //error occures here
fileContent = ms.ToArray();
}
// updating entity with new filecontent using INSERT statement
Можете ли вы предложить мне, как преобразовать InputStream правильно в массив байтов, так что я могу записать его в базу данных? Нам нужно поддерживать до 100 мб (изменить: я изменил файлы с 200 до 100).
P.S. Я знаю, что это очень большие файлы, но пока это единственный способ справиться с ними.
Как вы загрузки в базу данных? В идеале вы найдете способ, который не требовал бы все в памяти за один раз ... –
Ну, конечно. Хранение 200 мегабайт кусков в базе данных также довольно плохая идея. OOM в противном случае просто избегают, позволяя вашей программе работать как 64-битный процесс, удалять форсирование дрожания. –
Прочитайте файл только для нескольких строк за раз. Каждый раз, когда вы читаете несколько строк, сохраняйте соответствующие данные в базе данных, а затем возвращайтесь к чтению следующих нескольких строк из файла. – Mecon