使用ASP.NET MVC,我正在上传zip文件并使用以下方法提取它,并且似乎仍然存在一个过程,因为我无法将其删除处理后的Windows Explorer。
这是控制器帖子:
[HttpPost]
public ActionResult ImportZip(HttpPostedFileBase zip)
{
try
{
if (zip == null)
throw new Exception("Please select a file to import");
var result = new ContentManagementImporter(EducorDbRepo).ImportZipFile(zip);
ViewData[ViewDataKeys.SuccessMessage] = result;
return View("Import");
}
catch (Exception ex)
{
SetViewError(ex);
return View("Import");
}
}
这是处理上传文件的方法:
private static Dictionary<string, string> UnzipFiles(HttpPostedFileBase zipFile)
{
var files = new Dictionary<string, string>();
using (var archive = new ZipArchive(zipFile.InputStream))
{
foreach (var file in archive.Entries)
{
if (file == null)
continue;
using (var stream = file.Open())
using (var reader = new StreamReader(stream))
{
var markup = reader.ReadToEnd();
files.Add(file.Name, markup);
}
}
}
zipFile.InputStream.Close();
return files;
}
您可以看到我在代码中未能关闭需要关闭的东西的地方,还是还有另一个原因?
服务器行为不能锁定客户端上的文件。因此,我确定您看到的任何锁定都是由浏览器本身引起的(因此在您的控件之外(。
。您可能要考虑尝试替代浏览器并查看发生的事情。