簡體   English   中英

C#錯誤的Mimetype返回了應用程序/八位字節流

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM