[英]Downloading file with carrierwave from Rackspace cloudfiles not working
我正在使用Carrierwave將文本文件上傳到Rackspace,並且可以正常工作。 我的設置確實是標准的:
上載者:
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.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帳戶中看到我的文件。 我還看到我的模型已保存,並且在我的upload_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 URL。 但不是,它將返回store_dir路徑。
編輯
我應該注意,UploadedFile模型的基礎表有一個名為“文件”的列,該列僅包含文件的基本名稱,而不包含Rackspace雲文件的URL或完整路徑,這可能是問題的一部分...
確保已將RackSpace帳戶配置為啟用對文件的公共訪問。 在Cloud / FilesContainers下 ,編輯設置以啟用CDN。 之后,公共鏈接將通過CarrierWave :: Uploader.url提供
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.