C# MP4内容类型在不同浏览器中作为不同的MIME类型返回

C# MP4内容类型在不同浏览器中作为不同的MIME类型返回,c#,asp.net,mime-types,content-type,mime,C#,Asp.net,Mime Types,Content Type,Mime,我有一个ASP.NET应用程序,它的后端使用C#构建。我有一个表单可以上传pdf并检查MIME类型application/pdf,以验证它是有效文件。我需要在一个单独的MP4文件的形式这样做,但它似乎没有工作。它总是返回false。我在webkit中检查了返回的MIME类型FileUpload.PostedFile.ContentType,结果非常准确。然而,Firefox5和IE8分别测试了文本/csv和应用程序/octet流。这对我来说毫无意义。我还尝试将扩展映射到web.config文件中

我有一个ASP.NET应用程序,它的后端使用C#构建。我有一个表单可以上传pdf并检查MIME类型application/pdf,以验证它是有效文件。我需要在一个单独的MP4文件的形式这样做,但它似乎没有工作。它总是返回false。我在webkit中检查了返回的MIME类型FileUpload.PostedFile.ContentType,结果非常准确。然而,Firefox5和IE8分别测试了文本/csv和应用程序/octet流。这对我来说毫无意义。我还尝试将扩展映射到web.config文件中的正确MIME类型,如下所示:

<staticContent>
  <mimeMap fileExtension=".mp4" mimeType="video/mp4" />
  <mimeMap fileExtension=".m4v" mimeType="video/m4v" />
  <mimeMap fileExtension=".ogg" mimeType="video/ogg" />
  <mimeMap fileExtension=".ogv" mimeType="video/ogg" />
  <mimeMap fileExtension=".webm" mimeType="video/webm" />
</staticContent>

另外请注意,我使用的是VS附带的本地开发服务器。它是客户端上的浏览器,用于确定将发送到服务器的内容类型。也就是说,浏览器发送ASP.NET用于填充HttpPostedFile.ContentType属性的标头

无法使用IIS staticContent mime映射更改此设置,这些设置仅适用于服务器发送到客户端的文件(而不是相反)

在发布if-else块之前,最好在c#method中使用一些自定义代码,以便(尝试)通过服务器端检查确定真实mime类型。 请看一下导致不同结果和性能的这两种方法:

  • (这只是将文件扩展名与框架本身已知的文件扩展名相匹配)
  • (此方法应该猜测mime类型,在文件中查找魔法字节,)

  • 注意:一般来说,您应该始终检查/确定服务器上的内容类型,并且永远不要依赖客户端发送的内容类型(永远不要信任HttpPostedFile.ContentType):它可能是意外错误的(就像发生在您身上的情况一样),由一些黑客用户故意更改,错误是因为浏览器不符合某些标准(IE已知会为某些图像格式发送错误的mime类型)

    它是客户端上的浏览器,用于确定将发送到服务器的内容类型。也就是说,浏览器发送ASP.NET用于填充HttpPostedFile.ContentType属性的头

    无法使用IIS staticContent mime映射更改此设置,这些设置仅适用于服务器发送到客户端的文件(而不是相反)

    在发布if-else块之前,最好在c#method中使用一些自定义代码,以便(尝试)通过服务器端检查确定真实mime类型。 请看一下导致不同结果和性能的这两种方法:

  • (这只是将文件扩展名与框架本身已知的文件扩展名相匹配)
  • (此方法应该猜测mime类型,在文件中查找魔法字节,)

  • 注意:一般来说,您应该始终检查/确定服务器上的内容类型,并且永远不要依赖客户端发送的内容类型(永远不要信任HttpPostedFile.ContentType):它可能是意外错误的(就像发生在您身上的情况一样),由一些黑客用户故意更改,错误是因为浏览器不符合某些标准(已知IE会为某些图像格式发送错误的mime类型).

    希望发表评论,以警告所有人仔细检查IIS(在根级别或站点实例上)未覆盖给定的mime类型。由于此问题,未在Safari mobile上播放正确编码的视频时遇到了一个大问题!希望发表评论,警告所有人(在根级别或站点实例上)仔细检查IIS未覆盖给定的mime类型。由于此问题,未在Safari mobile上播放正确编码的视频时出现了一个大问题!
    if (file.PostedFile.ContentType == "video/mp4" || 
        file.PostedFile.ContentType == "video/mpeg" || 
        file.PostedFile.ContentType == "video/ogg" || 
        file.PostedFile.ContentType == "video/quicktime" || 
        file.PostedFile.ContentType == "video/webm") 
            return true;
    else
            return false;