嗨我正在一个应用程序中,我们提供选项来更改用户的配置文件图像。如何避免使用BinaryReader时出现OutOfMemoryException
我正在使用文件上传控件来选择文件。它允许最大100MB。
但我限制图像大小为30Mb。上传至20MB的图像没有任何问题。当它超过20MB时,它显示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