Привет Я работаю в приложении, где мы предоставляем возможность пользователю изменять свой профиль.Как избежать OutOfMemoryException при использовании BinaryReader
Я использую управление загрузкой файлов для выбора файлов. Он позволяет макс. 100 МБ.
Но я ограничиваю размер изображения до 30 Мб. Загрузка изображений до 20 МБ без проблем. Когда он выше 20 МБ, он отображает OutOfMemoryException. Я использую BinaryReader для сохранения изображений.
var file = context.Request.Files[0];
if (!Directory.Exists(Folder))
{
Directory.CreateDirectory(Folder);
}
if (file.ContentLength != 0)
{
if (Directory.Exists(targetFolder + "\\" + context.Request["Name"]) == false)
{
Directory.CreateDirectory(targetFolder + "\\" + context.Request["Name"]);
}
var binaryReader = new BinaryReader(file.InputStream);
var memoryBytes = binaryReader.ReadBytes(file.ContentLength);
using (var memoryStream = new MemoryStream(memoryBytes))
{
var imageStream = Image.FromStream(memoryStream);
imageStream.Save(targetFolder + "\\" + context.Request["Name"] + "\\" + "picture" + ".png" , ImageFormat.Png);
}
}
Есть ли ошибки, которые я сделал ?? Или предложите любой другой способ сохранить изображение.
Заранее благодарен! Любая помощь будет оценена по достоинству.
Возможно, этот ответ дает вам некоторую идею http://stackoverflow.com/a/8613300/2263683 –
Вероятно, не будет исправлена ваша проблема, но разве вы не должны закрывать этот 'BinaryReader'? Или используйте его в инструкции 'using'. Довольно уверен, что он реализует 'IDisposable', поэтому у вас может быть утечка. –
Я использовал BinaryReader, используя, но проблема не исправлена. Я получаю то же исключение. – Shesha