Asp.net 从文件系统而不是数据库中存储和检索图像
我需要一个存储图像的地方。我的第一个想法是使用数据库,但是。这似乎适合我的情况,但我如何实现它 文件名必须是唯一的,如何做到这一点。我应该使用guid吗 如何检索文件,我应该使用文件名直接进入数据库,创建一个aspx页面,并将文件名或主键作为查询字符串传递,然后读取文件 客户端缓存呢?当使用像image.aspx?id=123这样的页面时,是否启用了客户端缓存 删除关联记录时,如何删除文件 我想还有很多事情我还没想过 非常欢迎链接、样品和指南 你似乎对如何做这件事犹豫不决,所以我给你一些想法让你去做 如果要使用文件系统,请确保知道每个目录允许的文件数限制,以便可以设置创建子目录的系统 我会做一张这样的桌子:Asp.net 从文件系统而不是数据库中存储和检索图像,asp.net,database,file-upload,Asp.net,Database,File Upload,我需要一个存储图像的地方。我的第一个想法是使用数据库,但是。这似乎适合我的情况,但我如何实现它 文件名必须是唯一的,如何做到这一点。我应该使用guid吗 如何检索文件,我应该使用文件名直接进入数据库,创建一个aspx页面,并将文件名或主键作为查询字符串传递,然后读取文件 客户端缓存呢?当使用像image.aspx?id=123这样的页面时,是否启用了客户端缓存 删除关联记录时,如何删除文件 我想还有很多事情我还没想过 非常欢迎链接、样品和指南 你似乎对如何做这件事犹豫不决,所以我给你一些想法让
FileUpload
UploadID int identity/auto generate PK, used as FK in other tables
InternalFileName string
DisplayFileName string
Comment string
MimeType string
FileSizeBytes int
FileHash string MD5 Hash of a File
UploadUserID int FK to UserID
UploadDate date
您可以将UploadID包含在“拥有”此上载的表中,如与之相关联的顺序等。您可以添加InternalDirectory
列,但我更喜欢基于常量根值+一些特定于键的值来计算。例如,完整的文件名和目录为:
常量\u Root+'\'+OrderID+'\'+InternalFileName
您可以将InternalFileName设置为原始文件的上载ID和文件扩展名。这样它将是唯一的,但您必须将该行作为流程的第一部分插入,并在知道文件名和标识/自动生成行值后进行更新。您可以将InternalFileName设置为类似于YYYYMMDDHHMISSMMM的内容,并将原始文件的文件扩展名设置为文件扩展名,根据您使用子目录的方式,文件扩展名可能足够唯一
我喜欢存储一个使检测重复数据变得容易的文件
可以从文件系统中找到MimeType和FileSizeBytes,但如果将它们存储在数据库中,则可以更轻松地进行维护,因为您可以查询大型文件或某些类型的文件。
你似乎对如何做这件事犹豫不决,所以我给你一些想法让你去做
如果要使用文件系统,请确保知道每个目录允许的文件数限制,以便可以设置创建子目录的系统
我会做一张这样的桌子:
FileUpload
UploadID int identity/auto generate PK, used as FK in other tables
InternalFileName string
DisplayFileName string
Comment string
MimeType string
FileSizeBytes int
FileHash string MD5 Hash of a File
UploadUserID int FK to UserID
UploadDate date
您可以将UploadID包含在“拥有”此上载的表中,如与之相关联的顺序等。您可以添加InternalDirectory
列,但我更喜欢基于常量根值+一些特定于键的值来计算。例如,完整的文件名和目录为:
常量\u Root+'\'+OrderID+'\'+InternalFileName
您可以将InternalFileName设置为原始文件的上载ID和文件扩展名。这样它将是唯一的,但您必须将该行作为流程的第一部分插入,并在知道文件名和标识/自动生成行值后进行更新。您可以将InternalFileName设置为类似于YYYYMMDDHHMISSMMM的内容,并将原始文件的文件扩展名设置为文件扩展名,根据您使用子目录的方式,文件扩展名可能足够唯一
我喜欢存储一个使检测重复数据变得容易的文件
可以从文件系统中找到MimeType和FileSizeBytes,但如果将它们存储在数据库中,则可以更轻松地进行维护,因为您可以查询大型文件或某些类型的文件