Ich möchte den Inhaltstyp einer entfernten Datei erhalten, weil ich ein Problem habe, wenn ich es herunterladen. Der Inhaltstyp ist falsch. Hier ist mein Code eine DateiInhaltstyp einer entfernten Datei
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
Ich habe versucht, den folgenden Code zum Download der content_type zu erhalten, bevor aber immer noch nicht funktioniert:
url = URI.parse(url)
Net::HTTP.start(url.host, url.port){|http| http.head(url.request_uri)['Content-Type']}
Hat jemand eine Idee?
bearbeiten
Hier ist der Code, den ich, um herauszufinden, zu benutzen, die content_type es ist ..
MIME::Types.type_for(URI::encode(url)).map{|type| type.content_type}.join(' ')
# => "application/mp4 audio/mp4 video/mp4 video/vnd.objectvideo"
Aber hier ist das Ergebnis mit einem Video mit Tonspur .. Wie bin ich nehme an nur pink "video/mp4"? Ich kann nicht jeden Dateityp überprüfen, um zu sehen, was das Ergebnis ist. Es ist endlos.
Möchten Sie herausfinden, um welche Art von Datei es sich handelt oder welchen Wert der vom Server zurückgegebene Content-Type-Header hat? –
Hinweis: Es ist generell besser, 'URI.encode (...)' zu schreiben. Der Namespace-Navigator '::' ist für Module, Klassen und Konstanten gedacht. – tadman
@Jordan Ich versuche den Content-Type zu kennen. Grundsätzlich möchte ich sicher sein, dass die hochgeladene Datei das ist, was sie sein soll. Gemäß diesem Inhaltstyp instanziiere ich X- oder Y-Modell. – BriceB