【发布时间】:2019-11-03 10:47:28
【问题描述】:
我从 pinkode.net 窃取了一小段代码,我相信它是 - 可以找到任何文件的 mimetype。它工作得很好,非常需要。当我将代码推送到将调用该方法的 SSIS 包时,它总是返回相同的 mimetype,application/octet-stream。这是对这种方法的一种非常狭隘的使用,因为我只评估 .xls?文件。它在我的工作站 VS 项目上运行良好,但服务器上的相同代码运行良好但返回相同的类型。
Windows 10 服务器上定义的这种行为是什么/在哪里?文件关联妨碍了?我完全不知道为什么它不起作用并且没有真正尝试过。我可以找到并保留我知道的文件的 mimetype,但是这个 ETL 过程的目标是能够将任何 excel 解析为原始状态。从文件中获取 mimetype 对既定目标至关重要,并且在它存在于数据库服务器上之前一直运行良好。 ...
public static string getMimeFromFile(string file)
{
IntPtr mimeout;
if (!System.IO.File.Exists(file))
throw new FileNotFoundException(file + " not found");
int MaxContent = (int)new FileInfo(file).Length;
if (MaxContent > 4096) MaxContent = 4096;
FileStream fs = File.OpenRead(file);
byte[] buf = new byte[MaxContent];
fs.Read(buf, 0, MaxContent);
fs.Close();
int result = FindMimeFromData(IntPtr.Zero, file, buf, MaxContent, null, 0, out mimeout, 0);
if (result != 0)
throw Marshal.GetExceptionForHR(result);
string mime = Marshal.PtrToStringUni(mimeout);
Marshal.FreeCoTaskMem(mimeout);
return mime;
}
...
【问题讨论】:
标签: c# mime-types