【问题标题】:How to store file info in database after upload?上传后如何将文件信息存储在数据库中?
【发布时间】:2017-06-18 04:24:28
【问题描述】:

我想在使用 c# 将文件上传到我们的服务器后存储文件信息。基本上我们有两个存储位置,即。本地存储和云存储。

数据库的结构是

ID        int
CreateOn  smalldatetime
FileUrl  nvarchar(max)
StoreTypeID int

FileUrl 存储文件的 url,但不存储路径和文件名。

问题是如果我想从数据库和存储中删除这个文件,如果存储是本地的,我没有访问文件的路径,如果它在云中应该没有任何问题。

我的问题是我是否也应该跟踪列

Path
Filename 

为了访问本地文件?

可以通过从 fileurl 中提取文件名来避免文件名列。

【问题讨论】:

  • 为什么将FileUrl 设置为nvarchar(max)

标签: c# asp.net database-design


【解决方案1】:
ID        int
CreateOn  smalldatetime
FileUrl  nvarchar(max)
FilePath nvarchar(300)
StoreTypeID int

只需将路径添加到您的数据库。

通过路径变量,您将能够访问文件系统上的文件,如果需要,您可以通过Path.GetFileName(dbObject.FilePath) 获取文件名。


但是更好的方法是这样的。

ID        int
CreateOn  smalldatetime
FileUrl  nvarchar(max)
FileName nvarchar(300)
StoreTypeID int

请勿使用用户提供的名称将文件存储在本地或云存储中。但是将文件名与您的文件一起记录到数据库中。

当您要将文件保存在本地存储中时,请拥有一个您在代码级别知道的常量路径变量(通过配置更好),然后将其附加到带有文件 ID 的预定义或计算路径,因此您将知道您的文件所在的确切位置。

【讨论】:

  • 所以你同意混合云和本地的文件信息?
  • 是的,为什么不呢。实际上,您已经通过将StoreTypeID 放在桌子上来做到这一点。
  • 计算路径会导致多个数据库往返,我想避免这种情况。另外我有大量的容器/目录... ID int CreateOn smalldatetime PhysicalPath nvarchar(max) //includes filename FileUrl nvarchar(max) OriginalFileName nvarchar(300) StoreTypeID int 怎么样
猜你喜欢
  • 2011-06-19
  • 2018-12-24
  • 1970-01-01
  • 2011-11-18
  • 1970-01-01
  • 2015-06-12
  • 2018-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多