您好我正在申请工作,我们为用户提供更改其个人资料图片的选项。
我正在使用文件上传控件来选择文件。它允许最大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);
}
}
我犯了什么错误?或者,请建议任何其他方法来保存图像。
提前致谢!!!任何帮助将不胜感激。
答案 0 :(得分:0)
您必须使用
using(binaryReader){}
或读者 使用后处理(因为,在使用块之后使用调用Dispose() 保留,即使代码抛出异常):
using(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);
}
}