0
目前我只允許用戶將鏈接插入到外部圖像。由於這個原因,如果用戶輸入一個像'1'這樣的虛假網址,任何引用資產管道的內容都會中斷。Rails - 有效圖像。如果有效,僅捕獲名稱
我解決了這個問題上的看法級別通過使用這個輔助
def remote_image_exists?(url)
url = URI.parse(url)
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = (url.scheme == 'https')
http.start do |http|
return http.head(url.request_uri)['Content-Type'].start_with? 'image'
end
end
但這提交過程中沒有解決它(我可能會使用表單提交中這個助手的好)。
我試圖找到適當的方式來做到這一點(如果有?)然後一旦鏈接有效,有沒有辦法讓它是'當前'的名字?例如,自然文件的名稱? (也就是說,如果我下載它,默認文件的名稱)。
最終結果
由於所選擇的答案,我能夠在我想用邏輯決定。
def remote_image_exists?(url)
url = URI.parse(url)
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = (url.scheme == 'https')
http.start do |http|
return http.head(url.request_uri)['Content-Type'].start_with? 'image'
end
end
def get_file_name(url)
if remote_image_exists?(url)
current_name = File.basename(URI.parse(url).path)
return current_name
else
return nil
end
end
由於需求是雙面的,我不想把它變成單一的方法。
感謝您的信息。這很有幫助。然而,你提供這個,導致我徹底改變了我的問題的範圍(而不是如何實現你的建議)。如果您可以查看它,我將不勝感激。 – DNorthrup
請不要改變你的問題。堆棧溢出基於「一個問題,一個被接受的答案範式」,這意味着它在處理後續問題方面很差,並且已經編輯過的問題使得答案或多或少毫無意義。對於那些志願花時間爲你挑戰一個移動目標的人來說,這太過分了。如果您有更多問題,只需將它們作爲單獨的問題發佈。另外,請閱讀[XY問題](http://xyproblem.info/)。在拉他人幫忙之前,要仔細想想你真正想要什麼。 – MarsAtomic
這很公平。我將重新提出我的問題,並將其標記爲完整。 – DNorthrup