如果不操作文件,请在文件中使用
使用C#和.net 4.8,我有一个API方法,用户可以在其中上传文件。
我将文件保存到临时目录,进行一些处理,然后将其保存到最终目标目录。
在这个过程结束时,我想从临时目录中删除文件,但我得到了一个异常:
进程无法访问该文件,因为另一个进程正在使用该文件。
在这一行:
File.Delete(originalTmpPath);
为了缩小问题范围,我删除了所有进行额外处理的代码,所以现在我的代码只做3件事:
- 将文件保存到临时目录中
- 将文件"In the temp directory"保存到另一个目录中
- 删除第一个文件
这里是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);