【问题标题】:File uploading with Dragonfly, impossible to access images after upload (Rails 3)使用蜻蜓上传文件,上传后无法访问图像(Rails 3)
【发布时间】:2012-09-14 19:35:18
【问题描述】:

我正在尝试使用 Rails 3 和 Dragonfly(或任何可以实际工作的东西)制作一个多重拖放上传文件系统

我的文件通过 params 哈希进入我的控制器,我可以将它作为 ActionDispatch::Http::UploadedFile 检索,所以我认为我要做的就是将它推送到我的模型中属性图像,但它不起作用

这是我的图片模型:

class Picture < ActiveRecord::Base
   image_accessor :image
   attr_accessible :image_name, :image_uid, :title
end

我认为这可以在我的控制器中工作:

定义创建图像

@new_picture = Picture.new
@new_picture.image = params[:pic]

if @new_picture.save
  render :json => { :picture => @new_picture }
end

结束 好的,所以这奇怪地用 image_name nil 注册了记录,但设置了 image_uid

但是,当我尝试访问我的图片时 出现未找到错误

例如:

Request     URL:http://localhost:3000/media/BAhbBlsHOgZmSSIhMjAxMi8wOS8yMi8xOV8zMF8yOF83MzBfZmlsZQY6BkVU
Request Method:GET
Status Code:404 Not Found

我正在使用 ruby​​ 1.9.3 和 rails 3.2.8

有什么想法吗? :D

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 file-upload dragonfly-gem


    【解决方案1】:

    Dragonfly 需要先加载它的机架适配器,然后才能接受编码的 url 请求(如上面的请求)。加载它的最佳方法是在您的/config/application.rb 中的config.encoding = "utf-8 之前添加它

    config.middleware.insert 0, 'Rack::Cache', {:verbose     => true,:metastore   => URI.encode("file:#{Rails.root}/tmp/dragonfly/cache/meta"),:entitystore => URI.encode("file:#{Rails.root}/tmp/dragonfly/cache/body")} unless Rails.env.production?
    config.middleware.insert_after 'Rack::Cache', 'Dragonfly::Middleware', :images
    

    请注意,您还需要 Rack-Cache gem。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多