【发布时间】:2012-02-20 22:55:43
【问题描述】:
我知道在互联网历史上的某个地方一定有人问过这个问题,但我似乎无法确定正确的术语来获得我需要的答案。这个问题很接近:What is the best way to store user uploaded files in a website? 但我需要更多细节。
基本上,您应该如何有效地管理用户上传的文件,例如个人资料图片?我想知道的是关于在哪里制作目录结构的一些“最佳实践”。
上述问题的第二个答案提供了一些选项,例如将它们存储在网络根目录之外,这是我最初想到的。但后来我开始思考......
1) 我们如何在数据库中保存路径?绝对?相对? 每个用户都有一个“ProfilePicPath”列。如果我们想将整个项目从一台服务器完全连根拔起到另一台服务器,并且由于某种原因我们不能将文件放在新服务器上的相同位置怎么办?每个链接都会断开。
2) 在安全方面应该如何处理? 假设我们将 Web 应用程序部署到 C:\websites\site1,但我们将用户个人资料图片存储在 C:\用户内容\个人资料图片\?在我们加载个人资料图片的页面上,我们如何在后面的代码中以编程方式安全地访问它?我们不想把它们放在 C:\websites\site1\usercontent\profilepictures\ 中,对吗?我不喜欢将绝对路径放入数据库中,我也不想在后面的代码中的任何地方硬编码路径。
我们最初尝试使用 web 项目中的文件,但后来它变成了一种风险,因为这些用户文件是我们项目的一部分。更新/修改站点时复制/粘贴错误,我们可能会覆盖用户上传的文件,因为我们上次从存储库中签出项目等。这是一个巨大的麻烦,整个场景对我来说只是尖叫,“你这个白痴,你做错了......”但我似乎无法找到一个合适的指南来“正确”地做这件事。
需要明确的是,我们的需求很小 --- 这只是一个供内部使用的小项目,可能不超过 30 个用户,并且所有内容都需要包含在一台 IIS 7 服务器上。
【问题讨论】:
标签: asp.net security project-management