相关疑难解决方法(0)

使用.NET,如何根据文件签名而不是扩展名找到文件的mime类型

我正在寻找一种简单的方法来获取文件扩展名不正确或没有给出的mime类型,类似于.Net中的这个问题.

c# mime mime-types

234
推荐指数
9
解决办法
21万
查看次数

如何使用C#识别文件的扩展名/类型?

我有一个工作流程,允许用户上传任何文件,然后将读取该文件.

现在我的问题是,如果用户有图像文件xyz.jpg并且他只将其重命名为xyz(扩展名已移除),我们仍然可以使用/读取文件数据/元数据获取文件的类型/扩展名.

谢谢大家

c#

6
推荐指数
1
解决办法
4092
查看次数

替代Urlmon.dll中具有更多MIME类型的FindMimeFromData方法

通过Windows DLL可访问的FindMimeFromData方法Urlmon.dll能够确定存储在内存中的给定数据的MIME类型,考虑到存储此类数据的字节数组的前256个字节.

然而,在阅读了它的文档后,我在Windows Internet Explorer中引领了MIME类型检测,在那里我可以找到此方法能够识别的MIME类型.见清单.如您所见,此方法仅限于26种MIME类型.

所以我想知道是否有人能指出我有更多MIME类型的另一种方法,或者另外一种方法/类我可以包含我认为合适的MIME类型.

谢谢.

c# mime-types

6
推荐指数
1
解决办法
2万
查看次数

由 urlmon.dll 引起的“试图读取或写入受保护的内存”

我知道这已经被问过很多次了,但不幸的是我没有找到解决我的问题的方法,我正在使用urlmon.dll从字节数组中查找 MIME 类型,但我收到了 IIS 进程的崩溃w3wp.exe

尝试读取或写入受保护的内存。这通常表明其他内存已损坏。

编码:

public static int MimeSampleSize = 256;

public static string DefaultMimeType = "application/octet-stream";

[DllImport(@"urlmon.dll", CharSet = CharSet.Auto)]
private extern static uint FindMimeFromData(
    uint pBC,
    [MarshalAs(UnmanagedType.LPStr)] string pwzUrl,
    [MarshalAs(UnmanagedType.LPArray)] byte[] pBuffer,
    uint cbSize,
    [MarshalAs(UnmanagedType.LPStr)] string pwzMimeProposed,
    uint dwMimeFlags,
    out uint ppwzMimeOut,
    uint dwReserverd
);

public static string GetMimeFromBytes(byte[] data)
{
    try
    {
        uint mimeType;
        FindMimeFromData(0, null, data, (uint)MimeSampleSize, null, 0, out mimeType, 0);

        var mimePointer = new IntPtr(mimeType);
        var mime = Marshal.PtrToStringUni(mimePointer); …
Run Code Online (Sandbox Code Playgroud)

c# iis urlmon

3
推荐指数
1
解决办法
1759
查看次数

标签 统计

c# ×4

mime-types ×2

iis ×1

mime ×1

urlmon ×1