我正在创建一个我的网站模块,我可以在“相册”中显示图像,就像facebook一样。
为了存储/分组图像,我计划将它们放在应用程序结构中的~/Images
文件夹中。这被认为是不好的做法,还是会打开我的应用程序来解决任何安全漏洞?我读到你不应该在你的网站结构中放置这样的东西,但我不太明白为什么(或者这是相同的情况)。
因此,专辑将分组为......
~/Images/album1
,~/Images/album2
等
这是放在App_Data
内的合适的东西,还是有更适合这种情况的“首选”位置?
很抱歉,如果这是一个微不足道的问题。
答案 0 :(得分:1)
根据服务器的性能,您可能需要考虑使用BLOB将图像存储到数据库中
https://dev.mysql.com/doc/refman/5.0/en/blob.html
可以轻松对图像进行排序,整理和分类,而无需担心文件夹结构和文件夹权限。只需使用您选择的PHP / AJAX /语言提供身份验证,并选择要显示的文件。
这样,每张图片都可以拥有自己的字段(尽可能多),例如发布它的用户,原始文件名,标题,它所属的专辑等等。
答案 1 :(得分:1)
这里的所有三个答案都很好。上传的图片没有首选存储空间,完全取决于您的要求。
作为Henhealg says,不要将它们存储在App_Data中。如果您将它们放在此处,则无法通过网络访问它们。例如,即使路径正确,以下内容也不会呈现图像:
<img src="/App_Data/album1/image1.png" alt="" />
一种选择是将您的本地〜/相册目录映射到Web服务器like sylon says可访问的其他文件夹。这样可以将图像保留在提供MVC应用程序的目录之外,但“假装”它们在那里。如果您控制IIS并可以设置文件共享,这可能是您的选择。
此外,将like XToro says存储在SQL数据库中是一种选择。存储在这里很灵活,因为您不必担心文件夹或文件名冲突。多个用户可以拥有相同名称的相册和文件,但它们不会发生冲突,因为它们不像普通文件那样占用文件系统空间。如果安全性对您的应用程序很重要(不向未经授权的用户显示照片或相册),那么将它们放在SQL表中会使这变得相当容易。
但是,如果您不担心安全性或文件命名冲突,您可以轻松地将它们存储在MVC应用程序的〜/ Images或〜/ Albums目录中。
答案 2 :(得分:0)
由于您可以轻松地在用户检查应用程序投入生产时图像的存储位置,因此存储图像的位置与您设置到图像所存储的文件夹的权限无关。
答案 3 :(得分:0)
我会像你说的那样使用文件系统,但是将它存储在应用程序文件夹之外,因为你说这是不好的做法。我同意这一点 - 当我进行部署时,我更喜欢删除所有内容并放入新代码并保留web.config文件,这样我总是拥有一个干净的环境,而且从头开始更容易,而不必担心我需要备份或从之前的安装中带来什么。
我会使用IIS将目录映射到我的解决方案,无论我希望从网络共享存储中,还是想要安全地保存您的相册。
e.g。当您的网站位于D:\MySafeStorage\Albums\
~\Albums\
会映射到您网站的C:\inetpub\MyWebSite\