[英]Get URL without filename?
我試圖弄清楚如何在Rails中解析URL,並返回除文件名以外的所有內容,或者返回除最后一個反斜杠之后的所有內容。
例如,我想要:
http://bucket.s3.amazonaws.com/directoryname/1234/thumbnail.jpg
成為:
http://bucket.s3.amazonaws.com/directoryname/1234/
我已經找到了解析URI的所有方法,但這是可以的。 任何幫助,將不勝感激。
Ruby提供了一些可讓您輕松到達那里的方法:
File.dirname(URL) # => "http://bucket.s3.amazonaws.com/directoryname/1234"
考慮一下URL / URI是什么:它是協議,站點和資源的目錄路徑的指示符。 資源的目錄路徑與“路徑/到/文件”相同,因此File.dirname
可以很好地工作,而不必重新發明該特定的輪子。
尾部的/
不包含在內,因為它是路徑段之間的分隔符。 通常,您不需要這樣做,因為將資源連接到路徑會自動提供資源。
require 'uri'
URL = 'http://bucket.s3.amazonaws.com/directoryname/1234/thumbnail.jpg'
uri = URI.parse(URL)
uri.merge('foo.html').to_s
# => "http://bucket.s3.amazonaws.com/directoryname/1234/foo.html"
URI也使您可以輕松弄亂路徑:
uri.merge('../foo.html').to_s
# => "http://bucket.s3.amazonaws.com/directoryname/foo.html"
uri.merge('../bar/foo.html').to_s
# => "http://bucket.s3.amazonaws.com/directoryname/bar/foo.html"
URI經過了充分的測試,並為此目的而設計。 它還將允許您輕松添加查詢參數,並根據需要對其進行編碼。
文檔名稱
"http://bucket.s3.amazonaws.com/directoryname/1234/thumbnail.jpg".match(/(.*\/)+(.*$)/)[2]
=> "thumbnail.jpg"
不帶文件名的URL
"http://bucket.s3.amazonaws.com/directoryname/1234/thumbnail.jpg".match(/(.*\/)+(.*$)/)[1]
=> "http://bucket.s3.amazonaws.com/directoryname/1234/"
'http://a.b.pl/a/b/c/d.jpg'.rpartition('/').first
=> "http://a.b.pl/a/b/c"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.