【问题标题】:Upload files with carrierwave使用carrierwave上传文件
【发布时间】:2013-06-30 03:16:27
【问题描述】:

我正在尝试使用 Rails、Mongoid 和 Carrierwave 上传文件。当我点击提交时,POST 请求中“image”的值为{url : null}。当我使用记录器从我的控制器中的创建操作中查看“图像”的值时,该值是"C:\\fakepath\\tree.png",所以我不能直接使用 File.open 保存它来获取文件,因为这不是真正的路径.这是我第一次使用上传器编写表单,所以我不太确定自己在做什么。

这是我上传图片的表单:

<h1>New Post</h1>
<form id="new-post" name="post" enctype="multipart/form-data">
  <div class="field">
    <label for="name"> Name</label><br />
    <input type="text" name="name" id="name" value="<%= name %>" >
  </div>
  <div class="field">
    <label for="image"> Image</label><br />
    <input type="file" name="image" id="image" value="<%= image %>" >
  </div>
  <div class="field">
    <label for="content"> Content</label><br />
    <textarea rows="4" cols="50" name="content" id="content" value="<%= content %>" ></textarea>
  </div>
  <div class="actions">
    <input type="submit" value="Create Post" />
  </div>
</form>

这是我为支持carrierwave 添加的内容:

宝石文件:

gem "carrierwave"
gem "carrierwave-mongoid", :require => 'carrierwave/mongoid'

后模型:

attr_accessible :name, :content, :image
mount_uploader :image, ImageUploader

图片上传器:

class ImageUploader < CarrierWave::Uploader::Base
  storage :file
  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

【问题讨论】:

    标签: ruby-on-rails mongodb file-upload mongoid carrierwave


    【解决方案1】:

    试试本指南以帮助您入门: http://www.tutorialspoint.com/ruby-on-rails/rails-file-uploading.htm

    fakepath这个东西很好,你真的不关心路径本身,你关心的是上传的字节数据。

    【讨论】:

    • 当我尝试这样做时,图像的值只是包含假路径名的字符串,所以我无法调用 original_filename
    • 你关心的那一行是: File.open(path, "wb") { |f| f.write(upload['datafile'].read) } -- 文件路径无关紧要,除非您想保留名称,在这种情况下,您需要路径的最后一个标记,而不是整个路径。
    • 我遇到的问题是 upload['datafile'] 是一个包含文件路径的字符串,所以我不能调用 .original_filename 或 .read 。当我在文件输入 DOM 元素上使用 jQuery 和 .val() 时,我只得到这个字符串,而不是一个对象——我应该得到一个对象吗?
    猜你喜欢
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多