使用webkitdirectory属性上传目录后客户端无法删除本地文件如何解决
问题根因
这个问题和后端.NET逻辑无关,是Chrome浏览器针对webkitdirectory属性的文件选择器的固有特性:当你通过带webkitdirectory的input选中目录后,Chrome会持有目录下所有文件的读模式句柄,只要input元素的files属性仍保留对这些文件的引用,句柄就不会主动释放,这也是你观测到可以编辑文件、但无法删除/重命名的原因(读句柄不阻止写入操作,但是删除操作要求释放所有关联句柄)。
解决方案
在文件上传完成的回调逻辑中,主动释放文件引用即可,以下两种方案任选其一即可解决:
方案1:清空文件选择器内容
在AJAX的success或者complete回调中添加清空逻辑:
success: function (partialViewResult) { // 原有业务逻辑不变,新增以下代码 $('#allFilesInput').val(''); // 主动释放之前存储的FileList引用 allFiles = null; }
方案2:替换文件选择器元素(兜底方案,适合清空值无效的场景)
如果清空input值后仍有残留引用,直接销毁原有input元素、替换为新的同属性元素,彻底释放所有关联句柄:
success: function (partialViewResult) { // 原有业务逻辑不变,新增以下代码 const oldInput = $('#allFilesInput'); // 克隆元素保留原有事件绑定和属性 const newInput = oldInput.clone(true); oldInput.replaceWith(newInput); allFiles = null; }
内容的提问来源于stack exchange,提问作者Luke
相关产品推荐
相关产品推荐

