【问题标题】:Checking a file's content type by URL?通过 URL 检查文件的内容类型?
【发布时间】:2012-04-28 09:47:24
【问题描述】:

我正在开发一个应用程序,它可以从不同的地方下载各种媒体——其中很多是用户输入的。我发现在 http 响应中发现的很多内容类型都是垃圾。似乎主要用于视频。举个例子,网络上某个地方的 .wmv 文件,但是当我去抓取它时,它说它的内容类型是 text/plain。

除了这个响应内容类型之外,还有什么方法可以检查文件类型吗?我正在阅读一些有关文件幻数的信息,但我不确定这有多可靠......也许它比响应内容类型更可靠?

建议或想法?

【问题讨论】:

    标签: c# mime-types content-type httpwebresponse


    【解决方案1】:

    唯一的万无一失的方法是实际尝试打开文件(使用您的应用程序),看看它是否被正确解析。

    但是,如果您想要一个可以使用的 API,它将尝试从给定数据中确定正确的 MIME 类型,您可以使用FindMimeFromData。虽然这是一个原生 Win32 函数,但您仍然可以通过 p/invoke 使用它。

    【讨论】:

    • 非常好...我认为这需要我先下载数据,对吧?在一个完美的世界里,我会拥有我的 url,通过一些网络服务检查内容类型,然后存储为正确的类型。而不是存储为错误的类型然后修复。也许我会建立自己的服务来做到这一点:)
    • 您不必下载整个文件。例如,您通常可以从前几千字节中识别视频。有些文件可以欺骗您,但它们不寻常。我的经验是,如果内容类型说它不是视频,那么它可能不是。我忽略那些。如果内容类型表明它我感兴趣的东西,我会下载前几千字节,快速检查文件格式,如果通过了,我会考虑下载整件事。
    • @Jim Mischel 这听起来正是我想做的。有任何示例代码可以让我的生活更轻松吗? :) 干杯。
    • @Nicros:只下载文件的一部分非常容易。只需提出请求,然后根据需要阅读尽可能多的内容。确定数据是否是正确的格式是相当复杂的。我没有任何可以分享的代码。您必须追踪识别不同视频类型的代码。
    猜你喜欢
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-09
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多