如何访问存储在tmp目录中的文件?

时间:2013-01-23 20:30:53

标签: ruby-on-rails

我正在使用CarrierWave将图片上传到我的网页。目前,我使用它与Amazon S3和Heroku合作。但是,我希望能够使用localhost在我的机器上测试它。再说一遍,我有这个工作。但是,我将上传的照片存储在位于以下位置的应用程序tmp目录中:

Users/.../app/tmp/uploads

尝试显示图像时,我的链接断开了。我一直在用:

<img src='<%= bucket.path %>'/>

显示图像,它一直在Heroku上工作。在localhost上我收到此错误:

ActionController::RoutingError (No route matches [GET] "/Users/.../app/tmp/uploads/pic.jpeg")

我不确定该怎么做,我认为提供这条路就足够了。谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

你正在使用雾吗?这个回复假定你是。

在/config/environments/development.rb中,您应该能够设置以下内容:

config.uploadsURL = "http//localhost:3000"
config.serve_static_assets = true

在/config/initializers/carrierwave.rb中:

if Rails.env.production?
    # your aws config stuff
else
    config.storage   = :file
end

在一个视图中(除非我忘了什么)你应该只能:

<%= image_tag(image.imgUpload.mini) if image.imgUpload? %>

其中'mini'是carrierwave版本,imgUpload是您在模型中定义的安装:

mount_uploader :imgUpload, ImageUploader

当然,您应该能够在localhost上测试它,同时还使用AWS存储。从/:

更改/config/environments/development.rb可能更简单
config.action_controller.asset_host = "//#{ENV['FOG_DIRECTORY']}.s3.amazonaws.com"

config.action_controller.asset_host = "//your-test-bucket.s3.amazonaws.com"

并在localhost上运行时继续使用AWS。