`

rails中实现kindeditor中的图片上传

阅读更多

 

FROM:  http://blog.sina.com.cn/s/blog_767a3aa7010113k3.html

 

本人使用的rails版本:2.3.4, kindeditor版本: 3.5.2,paperclip版本: 2.3.11, activerecord版本:2.3.4kindeditor是个非常好用的html编辑器,要在rails中实现kindeditor中的图片上传功能,需做以下操作:

前提:安装了GEM包 paperclip

1、建一个model,我建了个空MODEL,存储图片文件列表

      ruby script/generate model image

2、把这个image的MODEL上添加图片属性

      ruby script/generate paperclip image data

      然后 rake db:migrate

3、建立一个controller

     ruby script/generate controller images upload image_list

     里面含两个action,用来接收上传和获取列表

4、修改MODEL(image),添加以下代码

      has_attached_file :data,

                        :styles=>{:medium=>"500x500>",:thumb=>"100x100>"},

                        :whiny => false

5、完成CONTROLLER(images)里的代码

   protect_from_forgery :except => :upload

   skip_before_filter :verify_authenticity_token

   def upload

      @image = Image.new(:data => params[:imgFile])

      if @image.save

        render :text => {"error" => 0, "url" => @image.data.url(:medium)}.to_json

      else

        render  :text => {"error" => 1}

      end

    end

 

  def image_list

    @images = Image.find(:all)

    @json = []

    for image in @images

      temp = %Q{{  "filesize":#{image.data.size},

                 "filename":"#{image.data_file_name}",

                 "dir_path":"#{image.data.url(:thumb)}",

                 "datetime":"#{image.created_at}"}}

      @json << temp

    end

    render :text => ("{\"file_list\":[" << @json.join(",") << "]}")

  end

6、修改kindeditor/plugins/image/image.html

    找到var imageUploadJson,把路径修改为要上传的action路径/images/upload   

7、修改kindeditor/plugins/file_manager/file_manager.js

   找到var fileManagerJson ,修改为 /images/image_list,这里是修改获取列表的action

   找到var fileurl和var iconurl,将其赋值都等于data.dir_path,这里的意思是直接用返回路径作为图片路径

   找到insertLink函数,这个函数的功能是把选到的图片路径填回到URL框里,由于我们要用中图(medium),修改 KE.$('url', dialogDoc).value = url.replace("/thumb/","/medium/");

 

补充几点注意事项:

a、在config/environment.rb中添加 config.gem "paperclip",否则在执行到upload中的@image = Image.new(:data => params[:imgFile])时会出错,错误信息为:模型Image中未定义方法"undefined method has_attached_file",从而导致前台总是报"服务器出现故障"的错误;

b、上传的图片在服务器上的保存路径如:public/system/datas/"id值"/original/xxx.jpg,而upload中回传给前台的url为render :text => {"error" => 0, "url" => @image.data.url(:medium)}.to_json,会导致前台因找不到图片路径而无法显示,因此需要将上述url修改为"url" => @image.data.url(:original)

c、前台界面的KE属性中可不配置imageUploadJson和fileManagerJson,因第6步和第7步已设置了默认值分别为/images/upload、/images/image_list

 

本人使用的rails版本:2.3.4, kindeditor版本: 3.5.2,paperclip版本: 2.3.11, activerecord版本:2.3.4

分享到:
评论

相关推荐

    ruby rails_kindeditor(编译器)插件

    在实际开发中,你还可以结合其他工具和库,例如使用 ActiveStorage(Rails 5.2 引入的存储服务)处理文件上传,或者利用 ActionCable 实现编辑器内容的实时预览。总的来说,`rails_kindeditor` 插件是 Ruby on Rails...

    rails_kindeditor:用于Ruby on Rails的Kindeditor

    rails_kindeditor将帮助您的rails应用程序与kindeditor集成,包括图像和文件上传。 安装及使用 将此添加到您的Gemfile gem 'jquery-rails' gem 'rails_kindeditor' 注意:Rails 5.1已从默认设置中删除了对jQuery...

    Rails中上传文件保存中文文件名乱码

    在Rails框架中处理文件上传时,经常会遇到一个问题,那就是当用户尝试上传包含中文名称的文件时,文件名可能会出现乱码。这个问题主要是由于字符编码不兼容导致的。Rails默认使用UTF-8编码,但文件系统或者某些外部...

    rails上传文件_paperclip

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

    rails_多文件上传

    Rails 多文件上传插件实现详解 Rails 多文件上传插件是基于 Ruby on Rails 框架的一款插件,旨在实现多文件的同时上传,控制文件的格式、数量,并且兼容多种浏览器,包括 IE6、7、Firefox 等。下面是对插件的详细...

    Ruby on Rails中文指南

    10. **会话(Sessions)**和**cookies**:Rails提供了内置的会话管理和cookie支持,用于跟踪用户状态和实现用户认证。 11. **测试(Testing)**:Rails鼓励TDD(Test-Driven Development),提供了丰富的测试工具,...

    使用Rails上传和转换视频

    本篇文章将详细介绍如何在Rails中实现视频上传和转换,并提供相关的源码示例。 首先,我们需要一个用于文件上传的组件。在Rails中,最常用的文件上传库是Paperclip和CarrierWave,但现在更推荐使用ActiveStorage,...

    rails 文件上传

    本篇文章将深入探讨Rails中的文件上传机制,并结合给定的“rails 文件上传”主题,提供关于如何在Rails应用中实现文件上传的详细知识。 1. **ActionDispatch::Http::UploadedFile**: 当用户通过表单上传文件时,...

    RailsGuides中那个blog程序源码

    Rails的 erb(Embedded Ruby)模板引擎允许开发者在HTML中嵌入Ruby代码,实现动态内容生成。 **控制器(Controller)** 是模型和视图之间的桥梁,处理用户的请求,调用模型进行业务处理,并将数据传递给视图进行...

    在Rails中使用SSL

    在Rails中使用SSL(安全套接层)是构建Web应用时确保数据传输安全的重要步骤。...通过理解并应用这些知识点,开发者可以在Rails应用中实现安全的SSL连接,提升用户数据的安全性,符合现代Web应用的安全标准。

    Rails里给文件上传添加progress_bar

    通过以上步骤,你可以在Rails应用中实现一个基本的文件上传进度条功能。这个功能不仅提升了用户体验,还能帮助用户了解文件上传的状态,避免了因为不确定的等待时间而产生的焦虑感。在实际项目中,你还可以根据需求...

    在rails中 使用RSpec生产CHM文档

    标题 "在Rails中使用RSpec生产CHM文档" 暗示了这个话题是关于如何在Ruby on Rails(简称Rails)框架中使用RSpec测试工具来创建帮助文档,特别是以CHM(Microsoft Compiled HTML Help)格式。CHM文件是一种常见的...

    Ruby-Knock为RailsAPI实现无缝JWT身份验证

    在描述中提到的"Knock"是一个专门为Rails API设计的库,它帮助开发者实现JSON Web Token(JWT)的身份验证,这是一种安全的身份验证机制,适用于无状态API。 JWT是一种轻量级的认证协议,它允许服务器向客户端发送...

    Rails实现的简历系统

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

    基于Ruby on Rails框架实现的无线点餐系统

    Ruby on Rails框架实现的无线点餐系统项目是一个基于无线网络技术,专为餐饮行业设计的综合性信息化解决方案。此系统利用Ruby on Rails全栈式MVC框架,结合当下先进的移动互联网技术,旨在提升餐厅运营效率、优化...

    基于ruby on rails框架实现的音乐推荐网站项目源码.zip

    基于ruby on rails框架实现的音乐推荐网站项目源码.zip基于ruby on rails框架实现的音乐推荐网站项目源码.zip基于ruby on rails框架实现的音乐推荐网站项目源码.zip基于ruby on rails框架实现的音乐推荐网站项目源码...

    Rails 中mongrel的安装

    2. **Ruby编写**: 作为纯Ruby实现的服务器,Mongrel与Rails框架集成紧密,减少了中间层带来的额外复杂性。 3. **轻量级**: Mongrel体积小巧,启动快速,适合开发和测试环境。 ** 安装Mongrel ** 在Rails项目中安装...

    rails中使用javascript日期控件

    这篇博客“rails中使用javascript日期控件”探讨的就是如何在Rails应用中集成JavaScript日期控件,特别是通过一个名为WebCalendar.js的库来实现这一功能。WebCalendar.js是一个轻量级的JavaScript库,用于创建交互式...

    Rails项目源代码

    图片的展示、上传表单、用户登录/注册页面等都会在视图中实现。 7. **控制器逻辑**: 控制器处理HTTP请求,调用模型方法,操作数据,并决定哪个视图应该被渲染。例如,`UsersController`可能有`create`、`show`、`...

Global site tag (gtag.js) - Google Analytics