-
rails 上传图片问题5
自己设计了一个博客,有一个上传图片的功能要完成。但找不到好的文档来学习。
我的需求只要把图片放到public/images 中就可以。不需要在数据库中做记录。
有什么好方法么
最好详细点。
谢谢先了
问题补充:jsntghf 写道用paperclip,model中配置has_attached_file :head, :path => ":rails_root/public/uploads/:class/:id_partition/head.:extension", :url => "/uploads/:class/:id_partition/head.:extension"
写一个表单,表单中记得加上:multipart => true,数据库字段加上head_file_name,head_content_type,head_file_size,控制器中直接user.head = params[:head]即可。
或者,可以自己写上传:
filename = ... File.open("#{File.expand_path(RAILS_ROOT)}/public/uploads/#{filename}", "wb") do |f| f.write(params[:imgFile].read) end
jsntghf 你好。 很感谢你的回复。
我的想法是很简单的实现一个上传功能,不需要任何数据库信息。
一下是我的代码。
和你第二个方法类似。
却不能成功的上传。
View Code
<%= form_tag :action => :image ,:html => {:multipart => true} do %>
<label >Image to Upload</label> <%= file_field_tag :image %></br>
<%= submit_tag 'Upload'%>
Controller Code
def image
@image=params[:image]
@name=params[:image].original_filename
File.open("#{File.expand_path(RAILS_ROOT)}/public/images/#{@name}", "wb") do |f|
f.write(@image.read)
end
end
我认为如果不写入 数据库就没有必要建 model 了。
是不是我的理解我问题?
问题补充:jsntghf 写道你这种情况,不需要写model,params[:image].original_filename
拿到值了吗?
你好 jsntghf ,
我在页面 <%=@name%>
可是没有得到任何的值。
问题补充:现在新的问题产生了。
我在image 方法中 定义了 @test=“test”
然后在 view 中 <%=@test%> 居然也是空的。
好像没有执行image方法一样。
问题补充:jsntghf 写道你这种情况,不需要写model,params[:image].original_filename
拿到值了吗?
你好 jsntghf,刚才我又折腾了一下。刚才的问题解决了。现在的问题是 controller 获得的 params[:image] 是一个字符串。 不是一个 file类型。我在研究一下。感谢你的回复
问题补充:jsntghf 写道你这种情况,不需要写model,params[:image].original_filename
拿到值了吗?
你好 jsntghf,
问题已经解决了。
很感谢你对我的帮助和关注。
下面是我改正后的代码 。
VIEW
<%= form_tag({:action => :image} ,:multipart => true) %>
<label >Image to Upload</label> <%= file_field_tag :image %></br>
<%= submit_tag 'Upload'%>
Controller
def image
@image=params[:image]
if ! @image.nil?
@name=params[:image].original_filename
File.open("#{File.expand_path(RAILS_ROOT)}/public/images/#{@name}", "wb") do |f|
f.write(@image.read)
end
redirect_to :action=>:index
else
redirect_to :action=>:index
end
end
希望能对 像我这样的其他新手与所帮助。
其实一度想要放弃rails,因为实在不太喜欢这样的框架。
感觉很没头绪。一切都是一头雾水。不理解这个框架的要领。
但是又是打心里喜欢ruby 这个 魅力的语言。
就硬着头皮上。
现在这个博客程序也是一点点的凑出来的。
代码风格和逻辑性都有很大的欠缺。
但希望这样一个项目能给自己练练手。
再次谢谢你的帮助。
以后肯定在学习的时候有很多这样那样的也许一时解决不了的问题
不是我不思考。只是有时候需要有个人点播一下。
也许就是一点点的点播就能让我打开思维。
就像今天这样。
我也不需要那种直接把写好的代码拿来。
只要给我点解决问题的灵感和继续学习的勇气。
那么我肯定不会惧怕那些暂时性困扰我的问题。
谢谢你。2011年8月10日 17:06
2个答案 按时间排序 按投票排序
-
用paperclip,model中配置
has_attached_file :head, :path => ":rails_root/public/uploads/:class/:id_partition/head.:extension", :url => "/uploads/:class/:id_partition/head.:extension"
写一个表单,表单中记得加上:multipart => true,数据库字段加上head_file_name,head_content_type,head_file_size,控制器中直接user.head = params[:head]即可。
或者,可以自己写上传:
filename = ... File.open("#{File.expand_path(RAILS_ROOT)}/public/uploads/#{filename}", "wb") do |f| f.write(params[:imgFile].read) end
2011年8月11日 09:56
相关推荐
在Ruby on Rails框架中,Paperclip是一个非常流行的用于处理文件上传的库。它提供了一种简单而优雅的方式来管理和处理模型中的附件,如图片、文档等。Paperclip与ActiveRecord紧密集成,使得在Rails应用中添加文件...
2. 文件格式控制:插件可以控制文件的格式,限制上传的文件类型,例如限制上传图片、文档、音频、视频等。 3. 文件数量控制:插件可以控制上传文件的数量,限制上传文件的个数。 4. 多浏览器兼容:插件兼容多种...
在Ruby on Rails框架中,文件上传是一个常见的需求,例如用户头像、产品图片或文档的上传。本篇文章将深入探讨Rails中的文件上传机制,并结合给定的“rails 文件上传”主题,提供关于如何在Rails应用中实现文件上传...
今天讲解一下rails的图片上传,就是最平常的上传图片 这里的rails版本2.3.5 首先新建一个write_pic model内容如下: 代码如下:class WritePicrequire “RMagick”require “uuid”def self.write(pic_data,ori_name,...
这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何利用Rails的强大功能来创建一个允许用户上传、分享和浏览图片的应用。 1. **Rails框架基础**: Rails的核心理念是DRY(Don't...
### Rails多图上传知识点详解 #### 一、所需插件及Gem包介绍 在实现Rails应用中的多图上传功能时,通常需要借助于特定的插件或Gem来简化开发流程并增强功能。以下两个工具是必不可少的: 1. **Paperclip(Gem)**...
这不仅涉及图片的上传和存储,还需要考虑到图片裁剪和缩放等图像处理技术的应用。 ##### 5.5 邮件集成 第十三章“Email”介绍了如何将电子邮件集成到Rails应用中,以便于发送激活邮件、重置密码邮件等。本章将介绍...
随着技术的不断发展,Rails会定期发布新版本,以引入新的功能、优化性能和修复已知问题。使用最新版可以确保开发者能利用到最前沿的技术,并且通常意味着更好的安全性和社区支持。 描述中的“这是本人精心收集的...
在本篇博文中,我们将深入探讨如何在Rails中利用AJAX提交文件或图片。 首先,我们需要设置一个表单来允许用户上传文件。在Rails中,`form_for`辅助方法可以帮助我们创建一个表单,但为了支持AJAX提交,我们需要将其...
- 实现用户可以上传图片、文档等文件的功能。 - 需要考虑安全性问题,防止恶意文件上传。 - 可以使用第三方服务,如 Amazon S3 来存储文件。 #### 八、状态跟踪 第十章关注 **状态跟踪**,即在用户会话期间保存...
2. **图片上传**:在Rails中,我们可以利用ActiveStorage组件来处理用户上传的图片。ActiveStorage与云存储服务如Amazon S3或Google Cloud Storage集成,方便地处理文件上传、存储和检索。它还提供了一套内置的图像...
书中涵盖了Rails的MVC架构、Gems的使用、Bootstrap的集成、用户认证、数据库操作等重要知识点,同时还介绍了如何使用Paperclip上传图片、使用Amazon S3存储图片以及如何对网站进行样式和功能的优化
10. **Rails社区和生态**:Rails有庞大的开发者社区,提供了众多高质量的开源gem,如Devise(用户认证)、Paperclip或Carrierwave(文件上传)、Pundit或CanCanCan(授权)、Resque或Sidekiq(后台任务处理)等。...
2. **图片和文件上传**:`rails_kindeditor` 支持图片和文件的上传功能。你需要配置一个专门用于存储这些上传文件的目录,并在服务器端处理文件上传的逻辑,确保安全性。 3. **安全考虑**:由于富文本编辑器允许...
批量上传相册功能是许多网站和应用程序中常见的一项功能,它允许用户一次性上传多张图片到他们的相册,极大地提高了用户交互性和效率。本资源提供了一系列的源代码,覆盖了多种编程语言,使得开发者能够快速集成批量...
4. **Paperclip** 和 **CarrierWave**:这两个Gem用于文件上传,支持图片处理和存储服务集成。 5. **Pundit**:轻量级的授权库,用于创建更细粒度的权限控制,相比CanCanCan更简单。 6. **Bootstrap-Sass** 和 **...
在Rails应用中,这种类型的应用通常会涉及用户上传图片、查看图片、评论图片等功能,需要处理图像存储(例如使用S3服务)、数据库设计(如用户、照片、评论表的结构)以及前后端交互逻辑。此外,由于是与OpsWorks...
- **Paperclip或Carrierwave**:文件上传和处理库,支持图片、文档等不同类型的文件。 - **Rake**:Ruby的任务调度工具,执行脚本或任务。 - **Bugsnag或Honeybadger**:错误追踪服务,实时监控并报告应用中的...