MVC和用户上传的文件,在哪里存储文件?

时间:2009-12-18 08:45:44

标签: asp.net-mvc

我在确定用户在asp.net mvc应用程序中上传文件的位置时遇到问题。

我已经使用asp经典大约10年了,并且总是将我的文件存储在网站的光盘上,并将文件名和文件夹存储在数据库中。

你们怎么解决这个问题?

将它们放在数据库中,可能会出现性能问题吗?或者按照我一直这样做的方式保留它,并且可能会遇到“同步”文件系统和数据库的问题?

我必须在数据库中有某种关系信息,所以我不能将它们存储在光盘上

我正在使用sql 2005 atm,我在某处读到sql 2008现在有某种数据列只是将“指针”(如text-datatype)存储到光盘上的文件中,这是要走的路?

在某种程度上,由于某种原因,数据库被称为数据库,所以不确定为什么再次发明轮子? :)

任何指针或想法都会受到赞赏,我想我只是想知道如果我采用数据库方法可能会遇到的问题

/ M

2 个答案:

答案 0 :(得分:2)

您可以使用特殊的App_Data文件夹放置上传的文件并将路径存储到数据库中。如果您使用SQL Server 2008,那么您可以查看FILESTREAM类型。

答案 1 :(得分:1)

我不确定您的Web应用程序是否负载均衡,对于我过去构建的文件管理系统,我总是将我的文件存储在SAN或网络共享驱动器上,以便它们可以访问所有的网络/应用服务器。另外,我不是按原样存储文件,而是在将文件保存在文件系统上之前总是更改文件名和类型(我通常使用GUID作为文件名和随机文件扩展名)。最后,我将原始文件信息存储在数据库中,文件可以逻辑移动或复制,而不是物理移植。