远距离文件的内容类型



我想获取远程文件的内容类型,因为我在下载时遇到问题。内容类型错误。这是我下载文件的代码

url = "http://my_url/my_file.mp4"
file = open(URI::encode(url))
content_type = file.content_type # => text/plain instead of video/mpeg or video/mp4

我之前尝试了以下代码来获取content_type,但仍然不起作用:

url = URI.parse(url)
Net::HTTP.start(url.host, url.port){|http|  http.head(url.request_uri)['Content-Type']}

有人有想法吗?

编辑

这是我用来找出它content_type的代码。

MIME::Types.type_for(URI::encode(url)).map{|type| type.content_type}.join(' ')
# => "application/mp4 audio/mp4 video/mp4 video/vnd.objectvideo"

但这是带有配乐的视频的结果。我怎么应该只粉红色的"视频/mp4"?我无法检查每种文件类型以查看结果是什么。这是无穷无尽的。

服务器没有义务告诉您正确的内容类型,在许多情况下,他们会弄错,因为它通常并不重要。大多数浏览器在接受和处理的内容方面提供了相当大的回旋余地。

确定的唯一方法是下拉文件并使用file之类的工具来检查它。这有一个相当大的数据库,其中包含不同的文件格式和识别它们的方法。

请求的结果可能是 HTML 错误消息。在验证文件的内容之前,您不会知道。

相关内容

  • 没有找到相关文章

最新更新