我应该将上传的(img文件)保存到App_Data吗?

时间:2011-12-26 19:54:11

标签: c# asp.net-mvc asp.net-mvc-3

我正在使用asp.net mvc并且有一个用户可以上传图像的部分。我想知道我应该把它们存放在哪里。

我关注this tutorial,他似乎将其存储在app_data中。然而,我读到另一个人说它应该只保存你的数据库。

所以不确定使用app_data有什么好处。我在共享主机上,所以我不知道这是否有所作为。

修改

我打算在数据库中存储图像的路径。然后,我将在图像标记中使用它们,并在用户访问我的网站时将其呈现给用户。我有一个文件上传器,只会期望图像(检查将是客户端和服务器)

3 个答案:

答案 0 :(得分:4)

本教程是一个简单的示例 - 如果您阅读了评论,原始代码只保存到uploads目录,看不到app_data

它已更改为app_data,因为这是一个特殊文件夹 - 不允许执行代码的文件夹。

你已经理解正确 - app_data确实存在基于文件的数据库。这就是文件夹的含义。因此,将图像保存到其中并不是正确的做法。

如果您确定只会上传图像(并且您可以控制它),我建议使用/uploads目录 - 图像的保留位置,也不允许执行代码(您应该能够执行此操作)通过IIS控制。)

答案 1 :(得分:1)

我想说这取决于你以后会对这些图片做些什么。如果您在img标记中使用这些图像,则可以将它们保存在Content /文件夹结构中的某个位置。

如果您不需要从外部访问它们,或者需要将它们更改回来,那么如果托管服务商允许,您可以将它们存储在Web根目录之外。

我不会将它们存储在app_data中,因为我个人认为存储数据库更为惯例。大多数不熟悉该产品的开发人员都不会在那里寻找图像。

但是:您可以在数据库中存储二进制文件(即使它可能不是最好的事情),因此数据库中指向同一目录中的文件的引用再次有意义。

我认为,这不仅仅是一个技术问题,而是一个观点。

答案 2 :(得分:0)

我更喜欢将它们存储在数据库中。在文件系统上存储图像时,我发现管理它们会有点困难。使用数据库,您可以快速重命名文件,删除文件,复制文件等。您可以在文件系统上执行相同的操作,但需要一些脚本知识。

另外,我不想管理路径和文件位置,这是对数据库的另一次投票。这些路径值总是进入web.config,部署和管理变得更加困难。