如何在ASP.NET中将用户与其各自的文件夹关联起来?
当userA上传文件时,他的文件将被上传到folderA,当userB被上传到folderB,依此类推。 ASP.NET中的角色/配置文件。文件夹将是预先存在的。任何人?
解决方案
我们可能需要手工编码。 ASP.NET没有什么内在的用于管理用户文件的内容。但是,这样做的代码应该相对容易。假设用户名是唯一的且永不更改,则可以将用户名与路径结合使用(使用Path.Combine),然后上传到该位置。我还将锁定该位置,以便其他任何人都无法访问它。
我们可以检查文件夹是否存在,如果不存在则为用户创建该文件夹,但这会带来安全隐患。我们可能还想尝试将数据存储在数据库中并将其绑定到用户。.我想这取决于我们允许用户上传的内容。
有几种方法可以执行此操作:
使用表单身份验证
如果使用表单身份验证,则可以设置一个约定,其中用户的用户名或者id可以用作服务器中用户可以上传文件的路径的基础。请注意,用户将无法直接访问该文件夹:该用户也应该能够通过Web应用程序从服务器下载文件。
使用Windows身份验证
如果我们使用Windows(例如ActiveDirectory)身份验证,则可以为用户提供对文件夹物理位置的访问权,也可以通过Web应用程序访问。
P.S.很高兴在这里见到我们Marlon!
我过去做的方法是使用基本上载文件夹(例如上载),然后在该文件夹中使用数据库中用户的ID创建一个文件夹。因此,对于用户ID为145的用户,结构为.. \ uploads \ 145.
我的代码要做的第一件事是检查文件夹是否存在,如果不存在,则在上载之前调用Directory.Create()(或者任何语法)来创建文件夹。
我们可能会发现有用的更多信息:我还使用GUID重命名了文件,这避免了如果他们上传2个具有相同名称的文件而导致名称冲突。缺点是我们通常需要维护一个具有原始文件名和物理(GUID)文件名的表。