0 0

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个答案 按时间排序 按投票排序

0 0

采纳的答案

你这种情况,不需要写model,params[:image].original_filename
拿到值了吗?

2011年8月11日 11:32
0 0

用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

相关推荐

    rails上传文件_paperclip

    在Ruby on Rails框架中,Paperclip是一个非常流行的用于处理文件上传的库。它提供了一种简单而优雅的方式来管理和处理模型中的附件,如图片、文档等。Paperclip与ActiveRecord紧密集成,使得在Rails应用中添加文件...

    rails_多文件上传

    2. 文件格式控制:插件可以控制文件的格式,限制上传的文件类型,例如限制上传图片、文档、音频、视频等。 3. 文件数量控制:插件可以控制上传文件的数量,限制上传文件的个数。 4. 多浏览器兼容:插件兼容多种...

    rails 文件上传

    在Ruby on Rails框架中,文件上传是一个常见的需求,例如用户头像、产品图片或文档的上传。本篇文章将深入探讨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构建的图片分享网站的完整源代码,它揭示了如何利用Rails的强大功能来创建一个允许用户上传、分享和浏览图片的应用。 1. **Rails框架基础**: Rails的核心理念是DRY(Don't...

    rails 多图上传.txt

    ### Rails多图上传知识点详解 #### 一、所需插件及Gem包介绍 在实现Rails应用中的多图上传功能时,通常需要借助于特定的插件或Gem来简化开发流程并增强功能。以下两个工具是必不可少的: 1. **Paperclip(Gem)**...

    RailsSpace

    这不仅涉及图片的上传和存储,还需要考虑到图片裁剪和缩放等图像处理技术的应用。 ##### 5.5 邮件集成 第十三章“Email”介绍了如何将电子邮件集成到Rails应用中,以便于发送激活邮件、重置密码邮件等。本章将介绍...

    ruby on rails最新版

    随着技术的不断发展,Rails会定期发布新版本,以引入新的功能、优化性能和修复已知问题。使用最新版可以确保开发者能利用到最前沿的技术,并且通常意味着更好的安全性和社区支持。 描述中的“这是本人精心收集的...

    rails ajax提交文件或图片

    在本篇博文中,我们将深入探讨如何在Rails中利用AJAX提交文件或图片。 首先,我们需要设置一个表单来允许用户上传文件。在Rails中,`form_for`辅助方法可以帮助我们创建一个表单,但为了支持AJAX提交,我们需要将其...

    Rails 3 in Action

    - 实现用户可以上传图片、文档等文件的功能。 - 需要考虑安全性问题,防止恶意文件上传。 - 可以使用第三方服务,如 Amazon S3 来存储文件。 #### 八、状态跟踪 第十章关注 **状态跟踪**,即在用户会话期间保存...

    Rails实现的简历系统

    2. **图片上传**:在Rails中,我们可以利用ActiveStorage组件来处理用户上传的图片。ActiveStorage与云存储服务如Amazon S3或Google Cloud Storage集成,方便地处理文件上传、存储和检索。它还提供了一套内置的图像...

    学习Ruby on Rails进行Web开发(英文版)

    书中涵盖了Rails的MVC架构、Gems的使用、Bootstrap的集成、用户认证、数据库操作等重要知识点,同时还介绍了如何使用Paperclip上传图片、使用Amazon S3存储图片以及如何对网站进行样式和功能的优化

    应用rails进行敏捷web开发

    10. **Rails社区和生态**:Rails有庞大的开发者社区,提供了众多高质量的开源gem,如Devise(用户认证)、Paperclip或Carrierwave(文件上传)、Pundit或CanCanCan(授权)、Resque或Sidekiq(后台任务处理)等。...

    ruby rails_kindeditor(编译器)插件

    2. **图片和文件上传**:`rails_kindeditor` 支持图片和文件的上传功能。你需要配置一个专门用于存储这些上传文件的目录,并在服务器端处理文件上传的逻辑,确保安全性。 3. **安全考虑**:由于富文本编辑器允许...

    批量上传相册功能源码(包含各种语言)

    批量上传相册功能是许多网站和应用程序中常见的一项功能,它允许用户一次性上传多张图片到他们的相册,极大地提高了用户交互性和效率。本资源提供了一系列的源代码,覆盖了多种编程语言,使得开发者能够快速集成批量...

    awesome-rails-gem-zh_CN, Rails 常用 Gem 列表 - Awesome Rails Gem 中文版.zip

    4. **Paperclip** 和 **CarrierWave**:这两个Gem用于文件上传,支持图片处理和存储服务集成。 5. **Pundit**:轻量级的授权库,用于创建更细粒度的权限控制,相比CanCanCan更简单。 6. **Bootstrap-Sass** 和 **...

    Rails应用程序样本AWSOpsWorksRailsDemoApp.zip

    在Rails应用中,这种类型的应用通常会涉及用户上传图片、查看图片、评论图片等功能,需要处理图像存储(例如使用S3服务)、数据库设计(如用户、照片、评论表的结构)以及前后端交互逻辑。此外,由于是与OpsWorks...

    rails项目必备组件

    - **Paperclip或Carrierwave**:文件上传和处理库,支持图片、文档等不同类型的文件。 - **Rake**:Ruby的任务调度工具,执行脚本或任务。 - **Bugsnag或Honeybadger**:错误追踪服务,实时监控并报告应用中的...

Global site tag (gtag.js) - Google Analytics