rails 上传 图片,ruby on rails 3 用jquery来完成文件上传 图片上传 预览,基本上和官方的文档差不多,我这里做一下补充和解释
去jQuery File Upload的github下载包,然后把css和js拷贝到public的响应目录下,然后在你的view里引用
rails 上传 图片
demo基本完成了,剩下的就是进度条的返回的值的修改一下就可以了
后面可能还会补充文件切割,和产生预览图等等的内容
参考文章:
http://www.tutorialspoint.com/ruby-on-rails/rails-file-uploading.htm
https://github.com/blueimp/jQuery-File-Upload/wiki/jQuery-File-Upload-for-Rails-3
基本上和官方的文档差不多,我这里做一下补充和解释
去jQuery File Upload的github下载包,然后把css和js拷贝到public的响应目录下,然后在你的view里引用
比如
[ccn lang="html" tab_size="4" theme="blackboard" width="800" ]
<%= stylesheet_link_tag('jquery.fileupload-ui') %>
<%= javascript_include_tag 'jquery.fileupload', 'jquery.fileupload-ui' %>
[/ccn]
视图里需要上传的地方
加上
[ccn lang="html" tab_size="4" theme="blackboard" width="800" ]
<%= f.file_field :picture %>
<% end %>
[/ccn]
我的dl_image是在downloads这个namespace下,在routes.rb的定义如下
[ccn lang="ruby" tab_size="4" theme="blackboard" width="800" ]
namespace "downloads" do
resources :dl_threads, :dl_images
namespace "admin" do
resources :dl_types do
get 'addsub', :on => :member
end
end
end
[/ccn]
然后在接受post的controller里写这个上传文件处理的方法
[ccn lang="ruby" tab_size="4" theme="blackboard" width="800" ]
# POST /dl_images
# POST /dl_images.xml
def create
upload_params = params[:dl_image]
picture = upload_params[:picture]
name = picture.original_filename
directory = "public/data"
path = File.join(directory, name)
File.open(path, "wb") { |f| f.write(picture.read) }
#后面渲染的就省略了,官方文档上有
[/ccn]
这样,基本上就已经实现了ajax的上传了,图片也是可以预览的,自己可以对保存路径进行自定义,满足自己的需要,也可以直接把文件作为二进制数据,存到数据库里,这个很多书上和文档都有,非常简单