2011-04-16 132 views
0

目前我使用系統命令wget來下載在我們的服務器上的視頻和存儲:下載視頻軌

system("cd #{RAILS_ROOT}/public/users/familyvideos/thumbs && wget -O sxyz1.mp4 #{video.download_url}") 

,但它在說:

cd: 1: can't cd to /var/home/web/***.com/public/users/familyvideos/thumbs 

任何人有任何想法?另請提供替代選項來執行此操作。

回答

1

這是cd程序抱怨,這是低級別的操作系統的東西,所以最可能的原因是#{RAILS_ROOT}/public之後的一個或多個文件夾尚不存在,或者有一個空間或其他字符文件路徑導致問題。嘗試在引號中圍繞目錄名稱。

`cd "#{RAILS_ROOT}/public/users/familyvideos/thumbs" && wget -O sxyz1.mp4 #{video.download_url}` 

至於更好的辦法,wget的是相當久經考驗所以沒有什麼錯誤使用它,因爲這是它是專爲。但是,您可以在同一時間將文件夾和文件名分配給它,而不是首先將其分配給它。

`wget -O "#{RAILS_ROOT}/public/users/familyvideos/thumbs/sxyz1.mp4" #{video.download_url}` 

還請注意我使用執行的反引號方法,而不是system所以你不處理轉義雙引號。您也可以使用%x{wget ...}

2

更好的解決方案是使用open-uri。

http://www.ruby-doc.org/stdlib/libdoc/open-uri/rdoc/

該段應做的伎倆:

url = video.download_url 
new_file_path = "#{Rails.root.to_s}/public/users/familyvideos/thumbs/your_video.mp4" 
open(new_file_path, "wb") do |file| 
    file.print open(url).read 
end