2012-01-06 13 views

Respuesta

5

Puede haber una manera más fácil de hacer esto, pero me gustaría recomendar el uso de una combinación de los Pathname y URI bibliotecas

require 'uri' 

uri = URI("http://testasp.vulnweb.com/avatars/noavatar.gif") 

path = uri.path # /avatars/noavatar.gif 

pathname = Pathname.new(path) 

extension = pathname.extname # gif 

Ver las Pathname y URI documentos de la biblioteca para obtener más información.

+0

Gracias por su reproducción ... mi otra pregunta es ¿cómo puedo recorrer la carpeta de origen de un uri y obtener extensiones? ... –

24

Puede utilizar un método extname de archivo

url = "http://testasp.vulnweb.com/avatars/noavatar.gif" 
File.extname(url) #=> .gif 
+0

gracias por su reproducción –

+0

Suponiendo que la URL se parece a una ruta de archivo pero eso no es necesariamente una suposición válida. ¿Qué sucede si hay un fragmento o parámetros de CGI? –

0

Sé que usted preguntó por la extracción de extensión de archivo, aunque echar un vistazo a esta pregunta/respuesta Determine file type in Ruby es mejor y más seguro que confiar en el tipo MIME en lugar que la extensión

2

Si se encuentra en los carriles y se habla de la extensión de la ruta de solicitud de URL que puede hacer esto desde un controlador o ayudante:

File.extname(request.path) 

Observando que request.path es un método del objeto pedido en la controlador de rieles

Y observando que request.path nunca devolverá nil.

Cuestiones relacionadas