保存到磁盘后无法删除上载的文件



使用C#和.net 4.8,我有一个API方法,用户可以在其中上传文件。

我将文件保存到临时目录,进行一些处理,然后将其保存到最终目标目录。

在这个过程结束时,我想从临时目录中删除文件,但我得到了一个异常:

进程无法访问该文件,因为另一个进程正在使用该文件。

在这一行:

File.Delete(originalTmpPath);

为了缩小问题范围,我删除了所有进行额外处理的代码,所以现在我的代码只做3件事:

  1. 将文件保存到临时目录中
  2. 将文件"In the temp directory"保存到另一个目录中
  3. 删除第一个文件

这里是API中的代码:

HttpResponseMessage result = null;
var httpRequest = HttpContext.Current.Request;
var file = httpRequest.Files[0];
// Save image to temp folder
file.SaveAs(originalTmpPath);
// Save image to final folder
Bitmap bmp = new Bitmap(System.Drawing.Image.FromFile(originalTmpPath));
bmp.Save(originalPath);
//Exception here:
File.Delete(originalTmpPath);

知道我如何停止进程/解锁文件并删除它吗?

谢谢

如果不操作文件,请在文件中使用InputStream
Bitmap bmp = new Bitmap(file.InputStream);
bmp.Save(originalPath);

然后

File.Delete(originalTmpPath);

当然,将文件保存到服务器是没有用的

或使用

using(Bitmap bmp = new Bitmap(originalTmpPath))
{
bmp.Save(originalPath);
}
File.Delete(originalTmpPath);

最新更新