[英]C# Incorrect Mimetype returned application/octet-stream
我相信是從pinkode.net竊取了一段代碼,它將找到任何文件的模仿類型。 它運作良好,非常需要。 當我將代碼推送到將調用該方法的SSIS包中時,它總是返回相同的mimetype,即application / octet-stream。 這種方法的使用范圍非常狹窄,因為我只評估.xls? 文件。 它可以在我的工作站VS項目上正常運行,但是服務器上的相同代碼可以正常運行,但是返回相同的類型。
Windows 10服務器上定義了哪種/哪種行為? 文件關聯妨礙了? 我完全不知道為什么它不起作用並且還沒有真正嘗試過。 我可以找到並保留我所知道文件的模仿類型,但是ETL過程的目標是能夠將所有excel解析為原始狀態。 從文件中獲取mimetype對於達到既定目標至關重要,直到它駐留在db服務器上之前,它一直可以正常工作。 ...
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;
}
...
文件關聯妨礙了?
很有可能-請參閱此處算法的第4步: Windows Internet Explorer中的MIME類型檢測
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.