我正在使用Carrierwave將文本文件上傳到Rackspace,並使其工作。我的設置是真正的標準:從Rackspace雲文件下載carrierwave文件不起作用
者:
class FileUploader < CarrierWave::Uploader::Base
include CarrierWave::MimeTypes
storage :fog
def store_dir
"/my/local/path"
end
end
型號:
class UploadedFile < ActiveRecord::Base
attr_accessible :file
mount_uploader :file, FileUploader
end
Carrierwave init文件:
CarrierWave.configure do |config|
config.fog_credentials = {
:provider => "Rackspace",
:rackspace_username => "xxxxx",
:rackspace_api_key => "yyyyy"
}
config.fog_directory = "my_container"
config.fog_host = "http://c000000.cdn.rackspacecloud.com"
config.fog_public = false
end
我不是從形式上傳文件,而是我使用延遲作業在後臺進程中生成文件,然後將其上傳到Rackspace:
file = File.new("/my/local/path/some_text_file.txt", "r")
uploaded_file = UploadedFile.new
uploaded_file.file = file
uploaded_file.save
到目前爲止,一切都很好。我可以在我的Rackspace帳戶中看到我的文件。 我也看到我的模型保存了,並且在我的uploaded_files表中有記錄。
我的問題是檢索文件。我試過以下內容:
downloader = FileUploader.new
downloader.retrieve_from_store!("some_text_file.txt")
我意識到retrieve_from_store!實際上並沒有下載該文件。但是,接下來應該是:
downloader.cache_stored_file!
但是由於之前的調用沒有檢索到任何內容,因此斷行。
我覺得我做的事情對我的下載根本錯誤,如下產生奇數輸出:
f = UploadedFile.first
f.file.url
"/my/local/path/some_text_file.txt"
基於所有我見過的例子,我希望f.file.url返回一個Rackspace CDN網址。但不是,它會返回store_dir路徑。
編輯
我應該注意,UploadedFile的模型基礎表中有一個名爲「文件」欄,僅包含文件的基本名稱,而不是一個URL或完整路徑Rackspace的雲文件,這可能是問題的一部分...
它的目的是該列僅包含文件名。網址的其餘部分由carrierwave構建 – RocketR 2014-11-20 18:46:41