我正在使用file field
控件上传图片,如下所示:
<%= form_for(:ImageUpload, :html => { :id => "imageupload" }) do |f| %>
<table width="100%">
<tr>
<td align="left">
<%= file_field( "upload", "datafile") %>
</td>
</tr>
</table>
<table width="92%">
<tr>
<td align="center">
<div class="button" style="margin-right:60px;">
<%= f.submit "Next", { :class => "buttonSearch"} %>
</div>
</td>
</tr>
</table>
<% end %>
控制器页面:
def create
get_img_path = params[:upload][:datafile].path
@blah = get_img_path
render 'new'
end
我想要获取上传图像的服务器路径,并且还想将图像的服务器路径更改为此app/assets/upload
,因为我想将上传的图像存储在此路径app/assets/uploaded
中。
请建议我,等待你的回复。
感谢。
答案 0 :(得分:1)
我个人使用Paperclip,但如果你想要一个完全&#34;本地&#34;解决方案,为什么不试试this recommendation:
path = params[:file].path
查看您的更新,您似乎只是通过访问路径的字符串元素来解决问题。对此的解决方案是translate it into a File
object,然后您就可以加载
你可以see this tutorial了解如何解决这个问题:
#app/models/file.rb
Class File < ActiveRecord::Base
def self.save(upload)
name = upload['datafile'].original_filename
directory = "public/data"
# create the file path
path = File.join(directory, name)
# write the file
File.open(path, "wb") { |f| f.write(upload['datafile'].read) }
end
end
这是保存文件的方式;但是如果你想获得路径,你仍然使用.path
方法,除非你需要在File
对象上进行
为此,我查看了several resources和found this:
file = File.join(Rails.root, 'app', 'csv', 'names.csv')
file.path
答案 1 :(得分:0)
我建议你使用Paperclip
或Carrierwave
gem来处理这个问题。
回形针 - Click Here
Carrierwave - Click Here
要获得路径,您可以执行此操作
file_path = params[:upload].blank? ? "" : params[:upload].path