在ruby中获取映像的服务器路径

时间:2014-04-10 05:43:03

标签: ruby-on-rails

我正在使用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中。 请建议我,等待你的回复。 感谢。

2 个答案:

答案 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 resourcesfound this

file = File.join(Rails.root, 'app', 'csv', 'names.csv')
file.path

答案 1 :(得分:0)

我建议你使用PaperclipCarrierwave gem来处理这个问题。

回形针 - Click Here

Carrierwave - Click Here

要获得路径,您可以执行此操作

file_path = params[:upload].blank? ? "" : params[:upload].path