在JE上搜索Rails文件上传,发现大部分搜到的文章,都由于版本的问题,不能用了。
比如:hideto 老大的 Rails 文件上传
或者,最典型的你在使用file_field时遇到了
的问题。实际上,不是不好用了,而是,升级后的Rails不支持了。
这时,我看到很多人,就开始说,用插件吧,Rails上传文件的插件很多,这也是真的。而且,我比较推荐的是下面三个:
uploadcolumn 比较容易用
attachment_fu Rails框架核心人员开发,该插件是acts_as_attachment的重写版本
File Column 最早的这类插件
这有一篇AJAX的使用插件的例子,或者会用到
活用插件attachment_fu,在rails 中以AJAX方式上传文件
然而,尺有所短,寸有所长。比如,大部分这些插件为了更好的支持图片上传处理,一般这些插件都依赖两个图形软件: ImageMagick 及其 Ruby接口软件包RMagick 和 FreeImage 及其 Ruby接口软件包ImageScience 。而前者在Ruby语言内应用更加广泛一些。注意像文件 RMagick-1.14.1_IM-6.3.0-7-Q8.zip 已经包含了软件ImageMagick,软件ImageMagick也要安装。
所以,Rails 的无组件上传也是用得到的。而大部分之前不能用的Rails上传,也不是因为什么特别严重的问题。其实,稍微改一下就能用。我粗浅的研究一下,希望,能够带来帮助。
<%= form_tag({:action => 'save'}, :multipart => true) %>
Upload your file: <%= file_field("file", "file") %>
<br/>
<%= submit_tag("Upload file") %>
<%= end_form_tag %>
会提示:
实际可以改为:
<% form_tag({:action => 'save'}, {:multipart => true}) do %>
Upload your file: <%= file_field("upload", "datafile") %>
<br/>
<%= submit_tag("Upload file") %>
<% end %>
而,Rails2.×后比较支持的写法应该如下:
<%form_for (:data_file, :url=>{:action => 'uploadFile'},
:html=>{:multipart => true}) do%>
<p><label for="upload_file">Select File</label> :
<%= file_field 'file', 'file' %></p>
<%= submit_tag "Upload" %>
<% end %>
下面,是一个在Rails 2.2.2 和2.3.2 下可以运行的,最基本的不用组件上传的代码。需要的点击
rails异步上传文件
Rails中文件上传
rails实现多文件的上传
rails 2.0文件上传