max*_*ax_ 71 ruby file-io file-upload ruby-on-rails
我是rails的新手,我正在使用CRUD技术编写一个RESTful网站.到目前为止,我已经创建了三个页面,所有这些页面都允许用户从数据库中创建,编辑和删除行.但是,我的第四页需要包含一个上传文件表单,但是a)我不知道文件系统如何与Rails一起工作,因此我不知道文件应该存储在哪里.该文件大约为100kb,无法存储在临时存储中,因为它会不断下载.并且b)我不知道如何写入文件.
如果您能告诉我如何执行上面提到的操作会很棒 - 在输入表单上创建上传输入,然后将文件写入单独目录中的文件路径.
fab*_*abi 123
更新2018年
虽然下面写的所有内容仍然适用,但Rails 5.2现在包括active_storage,允许直接上传到S3(或其他云存储服务),图像转换等内容.您应该查看rails指南并自行决定适合您的需求.
虽然有很多能够解决文件上传很漂亮(见宝石https://www.ruby-toolbox.com/categories/rails_file_uploads的列表),导轨具有内置的助手,这使得它很容易推出自己的解决方案.
file_field在表单中使用-form helper,rails会为您处理上传:
<%= form_for @person do |f| %>
<%= f.file_field :picture %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
您将在控制器中访问上载的文件,如下所示:
uploaded_io = params[:person][:picture]
File.open(Rails.root.join('public', 'uploads', uploaded_io.original_filename), 'wb') do |file|
file.write(uploaded_io.read)
end
Run Code Online (Sandbox Code Playgroud)
这取决于您想要实现的复杂程度,但这足以轻松上传/下载文件.这个例子来自rails指南,你可以去那里获取更多信息:http://guides.rubyonrails.org/form_helpers.html#uploading-files
2018年9月
对于最近检查此问题的任何人,Rails 5.2+现在默认都有ActiveStorage,我强烈建议您检查一下。
由于它现在是Rails 5.2+核心的一部分,因此它具有很好的集成性并具有出色的开箱即用功能(尽管所有其他著名的宝石,如Carrierwave,Shrine,回形针等,都很棒,但是这提供了非常出色的功能)我们可以在任何新的Rails项目中考虑的良好功能)
回形针团队不赞成使用Gems,而是使用Rails ActiveStorage。
这是ActiveStorage的github页面,到处都有大量资源
另外,我发现该视频对于了解Activestorage的功能非常有帮助
| 归档时间: |
|
| 查看次数: |
89619 次 |
| 最近记录: |