我正在.net 4(MVC 4)中编写应用程序,用户可以上传文件。
我想存储该文件的简短描述,并且放置此信息的最简单的位置是与文件或文件系统相关联的某种“描述”属性。
我确实有一个应用程序正在使用的数据库,因此如果这是最好的处理方式,那么就可以将这种信息存储在数据库中。
一些搜索显示System.Diagnostics命名空间中的FileVersionInfo.FileDescription属性。但是,这只有一个get访问器。
有没有人知道使用get / set访问器存储小字符串的有用属性?这些文件只是pdf,开放式办公室或微软办公室格式。
由于
答案 0 :(得分:2)
确实没有将属性附加到任意文件的通用方法。有NTFS alternate data streams,但有很多注意事项。
FileVersionInfo
内容用于可执行文件(.exe,.dll),但它是文件格式的一部分。这不是你可以附加到任意文件的东西。
某些文件格式包含您添加信息的工具。例如,JPEG图像可以添加属性,MP3文件可以让您添加ID3信息。我不知道PDF和Open Office格式是否具有这样的功能。 Microsoft Office文档具有某些这样的功能,因为您可以添加作者的名称和其他实际上不属于文档的元数据(例如,在打印Word文档时不会打印) 。但是,任何在Word(或其他Office应用程序)中打开文件的人都可能会更改该信息。
在任何情况下,如果要向文件添加元数据,则必须为要将其添加到的每种文件格式自定义该信息。例如,将数据库添加到PDF(如果可能的话)将与向Open Office或Microsoft Office文档添加相同的元数据不同。
最好使用单独的数据库来跟踪这些信息。
答案 1 :(得分:0)
Jim是对的,你可能最好将这种元数据存储在数据库中。如果您已经开始使用扩展属性,那么我的OSS Plaform.VirtualFileSystem库的wiki非常容易读/写属性(存储为NTFS备用数据流)。
https://github.com/platformdotnet/Platform.VirtualFileSystem/wiki/Advanced-Attribute-Access
例如:
var file = FileSystemManager.Default.ResolveFile("temp://test.txt");
file.Attributes["extended:customattribute"] = "Hello";