我想获取远程文件的内容类型,因为我下载时遇到问题。内容类型错误。这是我下载文件的代码
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"
但是这里的结果是带有音轨的视频..我怎么想只粉红色的“video / mp4”?我无法检查每个文件类型以查看结果是什么..它是无止境的。
答案 0 :(得分:1)
服务器没有义务告诉您正确的内容类型,在许多情况下,它们会弄错,因为它通常不重要。大多数浏览器都会为他们接受和处理的内容提供相当大的余地。
唯一可以确定的方法是下拉文件并使用file
之类的工具进行检查。它有一个相当大的不同文件格式的数据库以及识别它们的方法。
您的请求结果可能是HTML错误消息。在验证文件内容之前,您不会知道。