在asp.net中,我们上传了一个.jpeg文件,并使用以下代码将其保存为位图图像
HttpPostedFile uploadFile; System.IO.Stream stream = uploadFile.InputStream;
using (System.Drawing.Image imgSource = System.Drawing.Bitmap.FromStream(stream))
{
System.Drawing.Image.GetThumbnailImageAbort myCallback = new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
using (System.Drawing.Image imgThumbnail = imgSource.GetThumbnailImage(imgSource.Width, imgSource.Height, myCallback, IntPtr.Zero))
{
imgThumbnail.Save(filePath, System.Drawing.Imaging.ImageFormat.Jpeg);
imgThumbnail.Dispose();
}
imgSource.Dispose();
}
stream.Close();
stream.Flush();
stream.Dispose();
上传后,如果我们执行perfrom删除操作,则会抛出错误。
我们正在遵循这样的代码;
if (File.Exists(filePath))
{
File.Delete(filePath);
}
例外情况说:进程无法访问文件'abc.jpg',因为它正被另一个进程使用。
有谁知道,为什么会发生这种情况? 提前谢谢。
答案 0 :(得分:0)
首先尝试刷新然后关闭流程怎么样?
答案 1 :(得分:0)
此外:
答案 2 :(得分:0)
垃圾收集器不会立即将其资源释放到您的文件中。
您可以尝试运行GC.Collect()
来强制垃圾收集器执行此操作。在处理完文件之后,在尝试删除文件之前,请执行此操作。
编辑:我的机器上有一些防病毒软件,很可能是你正在使用你的文件。如果您有一个资源管理器窗口打开到创建图像的文件夹等,则相同。