2

我正在创建我的网站模块,我可以在“相册”中显示图像,就像 facebook 一样。

为了存储/分组图像,我计划将它们~/Images放在我的应用程序结构内的文件夹中。这被认为是不好的做法,还是会使我的应用程序面临任何安全漏洞?我读到你不应该在你的网站结构中放置这样的东西,但我不太明白为什么(或者如果这是相同的场景)。

因此,专辑将被归类为...

~/Images/album1,~/Images/album2等。

这是放在里面的合适的东西App_Data,还是有这样的东西更“首选”的位置?

对不起,如果这是一个微不足道的问题。

4

4 回答 4

1

根据服务器的性能,您可能需要考虑使用 BLOB 将图像存储到数据库中

https://dev.mysql.com/doc/refman/5.0/en/blob.html

图像可以轻松排序、组织、分类,而无需担心文件夹结构和文件夹权限。只需使用您选择的 PHP/AJAX/语言来提供身份验证并选择您希望显示的文件。

这样,每张图片都可以拥有自己的字段(任意数量),例如发布它的用户、原始文件名、标题、它所属的专辑等

于 2012-08-15T07:36:43.613 回答
1

这里的三个答案都很好。上传的图像没有首选存储,这完全取决于您的要求。

正如Henhealg 所说,不要将它们存储在 App_Data 中。如果您将它们放在这里,它们将无法从 Web 访问。例如,即使路径正确,以下内容也不会渲染图像:

<img src="/App_Data/album1/image1.png" alt="" />

一种选择是将您的本地 ~/Albums 目录映射到 Web 服务器可访问的不同文件夹,如 sylon 所说。这会将图像保留在提供 MVC 应用程序的目录之外,但会“假装”它们在那里。如果您控制 IIS 并且可以设置文件共享,那么这可能是您的一个选择。

此外,就像 XToro 所说,将它们存储在 SQL 数据库中是一种选择。在这里存储很灵活,因为您不必担心文件夹或文件名冲突。多个用户可以各自拥有同名的专辑和文件,但它们不会发生冲突,因为它们不像普通文件那样占用文件系统空间。如果安全性对您的应用程序很重要(不向未经授权的用户显示照片或相册),将它们放在 SQL 表中会使这变得相当容易。

但是,如果您不担心安全性或文件命名冲突,则可以轻松地将它们存储在 MVC 应用程序的 ~/Images 或 ~/Albums 目录中。

于 2012-08-15T12:39:56.013 回答
0

由于您可以在应用程序投入生产后轻松地作为用户检查图像的存储位置,因此存储图像的位置与您为存储图像的文件夹设置的权限无关紧要。

于 2012-08-15T06:49:57.130 回答
0

正如您所说,我会使用文件系统,但将其存储在应用程序文件夹之外,因为您说这是不好的做法。我同意这一点 - 当我进行部署时,我更喜欢删除所有内容并放入新代码并保持 web.config 文件这样我总是有一个干净的环境,而且从头开始更容易而不必担心我需要备份或从以前的安装中带来什么。

我会使用 IIS 将目录映射到我的解决方案中,无论我希望从网络共享存储中获得什么,或者您想要安全地保存您的相册。

例如 , 当您的网站在时D:\MySafeStorage\Albums\ 映射到您的网站 ~\Albums\C:\inetpub\MyWebSite\

于 2012-08-15T07:44:24.903 回答