0

我正在开发一个用户可以上传图片的网站。我将图像保存到 FTP 文件夹(不在 db 中),并将其详细信息保存在数据库中(文件名、路径等)。

我注意到在 localhost 上工作时,以下代码工作得很好,它没有给我任何错误。但是当上传到服务器(使用 Windows 托管计划)时,它不会删除文件并给我错误:cannot delete the file because it is used by another process.

我已确保该目录具有合适的文件权限,但它仍然没有删除它。奇怪的是,当我使用 FTP 客户端手动删除它时,它会锁定文件并且不允许我从那里删除。我必须回收应用程序池才能这样做。

当您拥有文件的完整路径时,我正在寻找从基于 Windows 的服务器中删除文件的最佳方法。

我在 localhost 上使用的代码是(当上传到服务器时,它会破坏其余代码):

if (File.Exists(path))
{
    File.Delete(path);
}

谢谢你。

4

1 回答 1

0

如果在重置应用程序池后可以删除文件,那么您在上传文件后似乎保留了对该文件的引用。您如何处理上传,上传后对文件执行了哪些操作?


更新:我发现其他一些人有同样的问题,上传的文件在调用后保持锁定SaveAs(...)File is locked after HttpPostedFile SaveAs(LocationOnServer)

最后,在您调用之前,文件似乎一直处于锁定状态SaveAs(...),因此,如果您有一些服务器端验证来决定是否保存文件,那么问题可能就在那里?请注意,我没有对此进行测试。

于 2013-06-10T07:43:50.693 回答