簡體   English   中英

從Rackspace Cloudfiles中使用載波下載文件不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM