【问题标题】:How can I get file extension from URI for an rails application如何从 URI 获取 Rails 应用程序的文件扩展名
【发布时间】:2012-02-04 02:32:32
【问题描述】:

我想从 http://testasp.vulnweb.com/avatars/noavatar.gif 等 uri 中找到 .gif、.jpg、.txt 等文件扩展名。

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    你可以使用 File 的 extname 方法

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

    【讨论】:

    • 您假设 URL 看起来像一个文件路径,但这不一定是一个有效的假设。如果有片段或 CGI 参数会怎样?
    【解决方案2】:

    可能有更简单的方法可以做到这一点,但我建议使用 PathnameURI 库的组合

    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
    

    有关详细信息,请参阅 PathnameURI 库文档。

    【讨论】:

    • 感谢您的重播...我的另一个问题是如何遍历 uri 的源文件夹并获取扩展名?...
    【解决方案3】:

    如果您在 Rails 中并且正在讨论请求 URL 路径的扩展名,您可以通过控制器或助手执行此操作:

    File.extname(request.path)
    

    注意 request.path 是 rails 控制器中 request 对象的一个​​方法。

    注意 request.path 永远不会返回 nil。

    【讨论】:

      【解决方案4】:

      我知道你问过关于提取文件扩展名的问题,尽管看看这个问题/答案Determine file type in Ruby 依赖 mime 类型而不是扩展名更好、更安全。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-15
        • 1970-01-01
        • 2014-04-14
        • 1970-01-01
        • 2011-09-25
        • 1970-01-01
        • 2010-11-23
        相关资源
        最近更新 更多