所以我有一个HTML表单,用户可以上传图像。这发布到我的行动,图像被放在一个唯一的用户的ID目录(并创建该目录,如果它不存在)。尝试保存文件:Directory.Exists()返回true时,实际上不存在目录
自从我在两个月前实施它以来,这一直工作得很好,而且我从未碰过它。最初我得到UnauthorizedAccessExceptions
,但通过进入我的上传目录的安全设置并授予对“每个人”的完全控制权来解决这个问题。
好吧,我不能再保存图像了。我开始再次获得UnauthorizedAccessExceptions
,尽管一次又一次更改文件夹的安全设置以尝试修复它。最后阅读关于在ASP.net中进行账户模拟的信息。
所以,现在我没有得到UnauthorizedAccessExceptions
,而是运行到我的网站认为该目录已存在的问题。
这里是我的表单动作片段:
if (Directory.Exists(Path.GetDirectoryName(Server.MapPath("../uploads/" + currentUser.UserId))) == false)
{
Directory.CreateDirectory(Path.GetDirectoryName("../uploads/" + currentUser.UserId));
}
if (Directory.Exists(Path.GetDirectoryName(Server.MapPath("../uploads/" + currentUser.UserId + "/" + newEntry.EntryId))) == false)
{
Directory.CreateDirectory(Path.GetDirectoryName("../uploads/" + currentUser.UserId + "/" + newEntry.EntryId));
}
ImageFile.SaveAs(Server.MapPath("../" + savedFileName));
内的代码,如果从来没有执行语句。所以,我删除它们,只是试图:
Directory.CreateDirectory(Path.GetDirectoryName("../uploads/" + currentUser.UserId));
什么都没有发生!然后当保存图像的时候,我得到一个异常,因为该目录不存在!谁能告诉我为什么Directory.Exists()
正在返回true
,或者为什么Directory.CreateDirectory()
在做什么都没有?
或者为什么这段代码一直没有变化,并且在几个月内工作正常,并且突然决定抛出一个合适的?
注意:如果我去的文件夹,然后手动创建目录,文件保存就好了
也许你没有设置权限? – Mediator
就像我说过的,文件夹安全性设置为给每个人完整的权限。而且,权限与Directory.Exists()无关,当它不应该返回true时 – Danny