【发布时间】:2019-11-13 01:02:31
【问题描述】:
我想从 FileTable 中 File_Stream 列的二进制数据中获取文件类型。
FileTable中有File_Type列,但不可靠。
注意以下查询:
这些文件是一样的!
【问题讨论】:
-
将您的信息作为测试发布在您的帖子中,而不是指向图片的链接。如果 File_Type 不可靠,那么您存储文件的方式就有问题。上传文件时,应使用正确的文件类型或扩展名进行保存。简而言之,您无法从纯字节数组(stackoverflow.com/questions/1654846/…)中确定文件的类型
-
没有 100% 万无一失的方法可以做到这一点。例如,HTML 和纯文本等类型没有允许您检测文件类型的标记。您正在寻找 Unix
file(1)实用程序的道德等价物,这在某种程度上是可能的,但在 SQL Server 中没有本机实现(并且设置具有此功能的 CLR 程序集,虽然可能,但工作量很大)。 -
如果文件名中的文件扩展名错误,“文件类型”列也是如此。文件类型由文件名上的 last 扩展名决定。因此,您的文件流会将名为
MyFile.txt.csv.xlsx.bin的文件视为bin文件。这也适用于您的操作系统。 Windows 和 Linux 都会将同一文件识别为bin文件
标签: sql-server