0

我正在用 .net 4 (MVC 4) 编写应用程序,用户可以上传文件。

我想存储文件的简短描述,最简单的放置此信息的位置是与文件或文件系统关联的某种“描述”属性。

我确实有一个应用程序正在使用的数据库,因此如果这是做事的最佳方式,我可以求助于将此类信息存储在数据库中。

经过一番搜索,我们发现了 System.Diagnostics 命名空间中的FileVersionInfo.FileDescription属性。但是,这只有一个 get 访问器。

有谁知道使用 get/set 访问器存储小字符串的有用属性?这些文件将仅是 pdf、开放式办公或微软办公格式。

谢谢

4

2 回答 2

2

确实没有将属性附加到任意文件的通用方法。有NTFS 备用数据流,但它们的使用有很多注意事项。

这些FileVersionInfo东西用于可执行文件(.exe、.dll),但它是文件格式的一部分。这不是您可以附加到任意文件的东西。

某些文件格式包括供您添加信息的工具。例如,JPEG 图像可让您添加属性,MP3 文件可让您添加 ID3 信息。我不知道 PDF 和 Open Office 格式是否有这样的功能。Microsoft Office 文档有一些这样的功能,您可以添加作者姓名和其他实际上不属于文档的元数据(例如,当您打印 Word 文档时不打印)。但是,在 Word(或其他 Office 应用程序)中打开文件的任何人都可能更改该信息。

在任何情况下,如果您想将元数据添加到文件中,则必须为要添加的每种文件格式自定义该信息。例如,将元数据添加到 PDF(如果可能的话)与将相同的元数据添加到 Open Office 或 Microsoft Office 文档是不同的。

您最好使用单独的数据库来跟踪该信息。

于 2013-06-07T02:09:14.283 回答
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";
于 2013-06-14T21:55:25.210 回答