Rails 3 如何实现最简单的文件上传

发布于 2021-11-21 07:01:59 字数 99 浏览 727 评论 2

想实现简单文件上传到服务器(不用Gem或Plugin),文件名按时间生成,数据库中保存上传后地址。网上查了很多资料,都不能使。

注:Rails版本3.2.11。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

緦唸λ蓇 2021-11-22 23:46:51

自己搞定,主要参考了http://stackoverflow.com/questions/5776252/rails-3-upload-files-to-public-directory

rails g controller mytest upload

[upload.html.erb]

<%= form_for :mytest, :html =>{:multipart => true} do |f| %>
  <%= f.file_field :myfile %>
  <%= f.submit "Upload" %>
<% end %>

[mytest_controller.rb]

def upload
  require 'fileutils' #ruby老版本可尝试改为 require 'ftools'
  tmp = params[:mytest][:myfile]
  file = File.join("public", tmp.original_filename)
  FileUtils.cp tmp.path, file
end

[routes.rb]

match ':controller/:action'

Ruby 1.9.3p362 & Rails 3.2.11 测试通过!

其他信息:

FileUtils使用:
http://www.ruby-doc.org/stdlib-1.9.3/libdoc/fileutils/rdoc/FileUtils.html
http://www.kuqin.com/rubycndocument/man/addlib/fileutils.html

坏尐絯 2021-11-21 12:28:27

自己搞定,主要参考了http://stackoverflow.com/questions/5776252/rails-3-upload-files-to-public-directory

rails g controller mytest upload

[upload.html.erb]

<%= form_for :mytest, :html =>{:multipart => true} do |f| %>
  <%= f.file_field :myfile %>
  <%= f.submit "Upload" %>
<% end %>

[mytest_controller.rb]

def upload
  require 'fileutils' #ruby老版本可尝试改为 require 'ftools'
  tmp = params[:mytest][:myfile]
  file = File.join("public", tmp.original_filename)
  FileUtils.cp tmp.path, file
end

[routes.rb]

match ':controller/:action'

Ruby 1.9.3p362 & Rails 3.2.11 测试通过!

其他信息:

FileUtils使用:
http://www.ruby-doc.org/stdlib-1.9.3/libdoc/fileutils/rdoc/FileUtils.html
http://www.kuqin.com/rubycndocument/man/addlib/fileutils.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文