【发布时间】:2010-12-09 13:02:30
【问题描述】:
我正在使用 AsyncFileUpload (AJAX Toolkit) 来上传图片。 我有一个处理图像大小调整的按钮。 这已经有一段时间了,但现在不行了......
protected void BtnUploadImage_Click(object sender, EventArgs e)
{
var imageFileNameRegEx = new Regex(@"(.*?)\.(jpg|jpeg|png|gif)$",
RegexOptions.IgnoreCase);
if (!AsyncFileUpload1.HasFile ||
!imageFileNameRegEx.IsMatch(AsyncFileUpload1.FileName))
{
AsyncFileUpload1.FailedValidation = true;
ErrorLabel.Visible = true;
return;
}
ErrorLabel.Visible = false;
var file = AsyncFileUpload1.PostedFile.InputStream;
var img = Image.FromStream(file, false, false);
...
}
我觉得奇怪的另一件事是:如果我尝试使用小于 80kb 的图像,它可以工作..!
我们已尝试重新启动服务器,但没有任何变化。 相同的代码在我的机器上运行良好。 (之前听说过??:))
我也尝试将文件保存在服务器上,然后通过 Image.FromFile() 获取文件,但随后出现“无法访问已关闭的文件”。
如何解决这个问题?
【问题讨论】:
-
您的 sn-p 中缺少代码。
-
@Joseph,我认为只是在函数处添加结束大括号是错误的,不能就此止步,
img变量没有使用。 -
不认为其余的相关,Image.FromStream() 无论如何都不执行之后会发生什么。
-
根据您的观点,Graphics/
Bitmap等时的发现。当您尝试编写时,反过来也会出现同样的问题一个图形到一个 Response.Out 流。 -
Cannot access a closed file错误很奇怪,但是如果您查看真实代码,您可能会发现无法正确使用IDisposable和using块的地方。这通常是导致资源仍在使用或无法读取或写入的原因。
标签: c# image asp.net-ajax upload ajaxcontroltoolkit