我正在尝试使用Rails,Mongoid和Carrierwave上传文件。当我单击submit时,POST请求中的"image“的值是{url : null}。当我使用记录器在我的控制器中查看create操作中的"image“值时,该值为"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而添加的内容:
Gemfile:
gem "carrierwave"
gem "carrierwave-mongoid", :require => 'carrierwave/mongoid'PostModel:
attr_accessible :name, :content, :image
mount_uploader :image, ImageUploaderImageUploader:
class ImageUploader < CarrierWave::Uploader::Base
storage :file
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end发布于 2013-07-03 00:37:00
试试这个指南,开始吧:http://www.tutorialspoint.com/ruby-on-rails/rails-file-uploading.htm
fakepath的事情很好,你真的不关心路径本身,你关心的是上传的字节数据。
https://stackoverflow.com/questions/17430937
复制相似问题