- 浏览: 215797 次
- 性别:
- 来自: 绍兴
文章分类
最新评论
-
112703013:
你好, 想问个问题 就是我这边上传一个zip文件 大概有100 ...
rails文件上传下载和删除 . -
chen_miao:
qplovechinese 写道 很好!
3q
simple jQuery date-picker plugin 使用 -
qplovechinese:
很好!
simple jQuery date-picker plugin 使用
写两个简单的rails 上传图片功能
一 rails 插件: paperclip-2.4.3.gem
1 gem install paperclip-2.4.3.gem,当数据删除时,自己做删除文件操作
2 新建model 表图片字段,
字段分为三个,假设model 引用字段名:photo ,则三个字段为
t.string :photo_file_name 图片名
t.string :photo_content_type 图片类型
t.string :photo_file_size 图片大小
后面字段名不能变
3 表的model 引用, has_attached_file :photo
4 页面上,假设 form_for 表单提单
<%= f.file_field :photo %>
5 使用图片时
<%=image_tag @organization.photo.url %>
OK 了,我是在rails 3 中使用的,插件是将图片的路径为三部分保存,图片存放在 。。\public\system\
今天试了一下,也可以上传swf文件,同样的方法
<object id="FlashID" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="690" height="90"> <param name="movie" value="<%=adver_flash.ad.url%>" /> <param name="quality" value="high" /> <param name="wmode" value="opaque" /> <param name="swfversion" value="9.0.45.0" /> <!-- 此 param 标签提示使用 Flash Player 6.0 r65 和更高版本的用户下载最新版本的 Flash Player。如果您不想让用户看到该提示,请将其删除。 --> <param name="expressinstall" value="<%=adver_flash.ad.url%>" /> <!-- 下一个对象标签用于非 IE 浏览器。所以使用 IECC 将其从 IE 隐藏。 --> <!--[if !IE]>--> <object type="application/x-shockwave-flash" data="<%=adver_flash.ad.url%>" width="690" height="90"> <!--<![endif]--> <param name="quality" value="high" /> <param name="wmode" value="opaque" /> <param name="swfversion" value="9.0.45.0" /> <param name="expressinstall" value="<%=adver_flash.ad.url%>" /> <!-- 浏览器将以下替代内容显示给使用 Flash Player 6.0 和更低版本的用户。 --> <div> <h4>此页面上的内容需要较新版本的 Adobe Flash Player。</h4> <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="获取 Adobe Flash Player" width="112" height="33" /></a></p> </div> <!--[if !IE]>--> </object> <!--<![endif]--> </object>
当然,这个paperclip 插件并不支持文件名为中文的上传方式,解决方法可以在上传时,自己重新命名文件名为数字或是别得什么的。
before_create :randomize_file_name def randomize_file_name extension = File.extname(elaPDF_file_name).downcase self.elaPDF.instance_write(:file_name, "#{Time.now.strftime("%y%m%d%H%M%S") + rand(100).to_s}#{extension}") end
return nil if uploaded_file.nil?
extension = File.extname(uploaded_file.original_filename).downcase
@queued_for_write[:original] = to_tempfile(uploaded_file)
instance_write(:file_name, "#{Time.now.strftime("%Y%m%d%H%M%S")}#{rand(1000)}#{extension}")
instance_write(:content_type, uploaded_file.content_type.to_s.strip) instance_write(:file_size, uploaded_file.size.to_i)
instance_write(:fingerprint, generate_fingerprint(uploaded_file))
instance_write(:updated_at, Time.now)
二 使用rails 方法 ,也就是很多人用得方法,此处为多张图片保存到第二张表中的方法
1 页面上写法
<%=file_field_tag "pic_path[]"%>
2 表单controller 方法
if params[:pic_path] && params[:pic_path].size!=0
params[:pic_path].each do |pic_path|
photo_path=ZyFenxiangPhoto.send_picture(pic_path, zy_fenxiang.id)
ZyFenxiangPhoto.create(:zy_fenxiang_id=>zy_fenxiang.id,:photo_path=>photo_path)
end
end
3 "ZyFenxiangPhoto" model 方法写法
#上传图片
def self.send_picture pic_path, fenxiang_id
name = Time.now.strftime("%y%m%d%I%M%S") + 'size'+ pic_path.size.to_s
suffix=File.extname("#{pic_path.original_filename}")
name<<suffix
directory = UPPATH+"/zy_fenxiangs/#{fenxiang_id}/"
if !File.exist?(directory)
FileUtils.mkdir_p(directory) #创建文件夹
end
path = File.join(directory, name)
filesave(pic_path,path)
return "/assets/zy_fenxiangs/#{fenxiang_id}/"+name
end
#UPPATH='D:/items/zyt/zyt/app/assets/images' 生产或是开发模式下
#文件上传处理
def self.filesave(upload,path)
File.open(path, "wb") { |f| f.write(upload.read) }
end
4 \config\environment.rb 初始路径
environment.rb
# Load the rails application
require File.expand_path('../application', __FILE__)
5 提交表单
6 使用图片url
直接使用数据地址,因为它是将图片路径直接写入到数据库中
7 删除记录同时,同时删除图片
controller 方法
zy_fenxiang.zy_fenxiang_photos.each do |zy_fenxiang_photo|
zy_fenxiang_photo.filedelete ##删除图片文件
zy_fenxiang_photo.destroy
end
model 方法
#删除图片文件
def filedelete
photo_path=self.photo_path
name=photo_path.split("/")[photo_path.split("/").length-1]
if File.exist?("#{UPPATH}/zy_fenxiangs/#{self.zy_fenxiang_id}/"+name)
File.delete("#{UPPATH}/zy_fenxiangs/#{self.zy_fenxiang_id}/"+name)
end
end
以上七步,OK过程了,因为是直接将图片路径存入数据库中,所以只要写文件方法。
发表评论
-
require,include,load,extend的用途和区别
2013-03-01 22:47 980这四个方法还是很好玩很有用,也是比较容易混的。 ... -
ruby 标准类型总结
2013-02-01 16:45 1244一、数字 Ruby支持整数 ... -
RMagick 简介
2013-01-18 20:38 1416RMagick 是一个将 Ruby 语言绑定到 ImageM ... -
ARP欺骗功能
2013-01-12 22:47 1158一、设置前准备 当使用了防止ARP欺骗功能(IP和 ... -
淘宝开源编辑器KISSY Editor
2013-01-04 16:46 2382KISSY Editor 是开源项目 KISSY ... -
Rails创建定时任务
2012-12-10 10:21 1850Task & Rexcel 最终生成的报 ... -
Ruby on Rails页面缓存 实践
2012-12-05 11:02 1077三种方式 Page Caching, Action ... -
rails缓存学习
2012-11-27 16:38 1892FORM:http://kenbeit.com/tag/ ... -
Ruby on Rails 简单页面缓存
2012-11-16 17:28 1234三种方式 Page Caching, Action Ca ... -
Ruby写入Excel文件 插件方法
2012-11-01 16:21 1530spreadsheet插件(主要是excel生成写入数 ... -
RUBY操作EXCEL文件
2012-10-31 17:05 1422使用ruby来操作excel文 ... -
Ruby on Rails的session和session存储方案
2012-10-18 17:42 1289session:页面间的信息保存手段。使用:赋值 ses ... -
Ruby程序打包成可执行文件的工具 - RubyScript2Exe
2012-09-19 21:28 2280RubyScript2Exe能够将你的Ruby应用程序转成一个 ... -
rails中实现kindeditor中的图片上传
2012-09-14 16:10 1657FROM: http://blog.sina.co ... -
js 彷excel 键盘上下左右移动
2012-09-03 19:11 3044思路假设初始坐标为(0,0)首先要算出表格的最大最小坐标 即( ... -
ruby Hash 总结
2012-08-31 18:51 63101. 如何创建Hash? x = Hash.newx = { ... -
ruby inject,循环计算优化
2012-08-27 16:51 1331From:http://blog.jayfields.com/ ... -
jquery 图表插件highcharts & highstock
2012-08-23 14:43 11203Highcharts是纯JavaScript编写的图表库,提 ... -
rails or ruby 中 fields_for 提交方式
2012-08-20 20:10 1638Project这个Model的new表单,我们需要在创建Pro ... -
Rails中导出excel的快速简便的方法
2012-07-31 15:51 1096controller def to_e ...
相关推荐
Paperclip与ActiveRecord紧密集成,使得在Rails应用中添加文件上传功能变得相当便捷。 **Paperclip的基本使用** 1. **安装与配置** 首先,你需要通过Gemfile来安装Paperclip,并运行`bundle install`命令: ```...
2. 文件格式控制:插件可以控制文件的格式,限制上传的文件类型,例如限制上传图片、文档、音频、视频等。 3. 文件数量控制:插件可以控制上传文件的数量,限制上传文件的个数。 4. 多浏览器兼容:插件兼容多种...
今天讲解一下rails的图片上传,就是最平常的上传图片 这里的rails版本2.3.5 首先新建一个write_pic model内容如下: 代码如下:class WritePicrequire “RMagick”require “uuid”def self.write(pic_data,ori_name,...
在Ruby on Rails框架中,...通过理解以上知识点,你将能够构建一个功能完善的Rails文件上传系统,确保用户能安全、便捷地上传和管理他们的文件。在实际项目中,还需要考虑性能优化、错误处理和用户体验等方面的问题。
这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何利用Rails的强大功能来创建一个允许用户上传、分享和浏览图片的应用。 1. **Rails框架基础**: Rails的核心理念是DRY(Don't...
这不仅涉及图片的上传和存储,还需要考虑到图片裁剪和缩放等图像处理技术的应用。 ##### 5.5 邮件集成 第十三章“Email”介绍了如何将电子邮件集成到Rails应用中,以便于发送激活邮件、重置密码邮件等。本章将介绍...
在实现Rails应用中的多图上传功能时,通常需要借助于特定的插件或Gem来简化开发流程并增强功能。以下两个工具是必不可少的: 1. **Paperclip(Gem)** - **用途**:用于后台文件处理,是一款非常强大的工具,支持...
批量上传相册功能是许多网站和应用程序中常见的一项功能,它允许用户一次性上传多张图片到他们的相册,极大地提高了用户交互性和效率。本资源提供了一系列的源代码,覆盖了多种编程语言,使得开发者能够快速集成批量...
例如,Devise用于用户认证,CanCanCan用于授权管理,Paperclip或Carrierwave处理文件上传,Stripe或PayPal集成支付功能,以及各种数据分析和报表生成库等。 总的来说,这个压缩包对于Ruby on Rails的初学者或希望...
- 实现用户可以上传图片、文档等文件的功能。 - 需要考虑安全性问题,防止恶意文件上传。 - 可以使用第三方服务,如 Amazon S3 来存储文件。 #### 八、状态跟踪 第十章关注 **状态跟踪**,即在用户会话期间保存...
它提供了一套完整的解决方案,包括多文件选择、上传进度显示、取消与删除上传任务、预览上传图片等功能,使得在前端实现复杂的文件上传操作变得简单易行。 该组件的一大特色是其对 **多文件上传** 的支持。用户可以...
综上所述,这个简历系统涵盖了Rails开发中的多个重要方面,从用户交互(图片上传、验证码)、数据管理(查询、分页、排序)到后台功能(邮件发送),构建了一个完整的功能集。开发者可以通过这个项目学习和实践Rails...
书中涵盖了Rails的MVC架构、Gems的使用、Bootstrap的集成、用户认证、数据库操作等重要知识点,同时还介绍了如何使用Paperclip上传图片、使用Amazon S3存储图片以及如何对网站进行样式和功能的优化
Ruby是一种强大的动态编程语言,广泛应用于Web开发、脚本编写以及各种高级编程任务。...无论是Web应用中的图像上传处理,还是独立的图像处理脚本,RMagick都能满足需求,帮助你实现高效且高质量的图像处理功能。
2. **图片和文件上传**:`rails_kindeditor` 支持图片和文件的上传功能。你需要配置一个专门用于存储这些上传文件的目录,并在服务器端处理文件上传的逻辑,确保安全性。 3. **安全考虑**:由于富文本编辑器允许...
- **文件预览**: 在上传前,可以通过File API读取文件内容生成预览图,对图片、文本等格式的文件进行预览,确保用户上传的文件符合预期。 - **文件大小限制**: 为防止过大文件导致服务器压力,前端通常会限制...
7. **Asset Pipeline**:Rails的静态资源管理,包括CSS、JavaScript和图片,提供合并、压缩和版本控制等功能。 8. **Heroku部署**:Rails应用常使用的云平台,提供了便捷的一键部署和管理服务。 9. **Rails安全**...
具有多文件上传、拖拽、进度条和图像预览功能的文件上传插件,支持跨域、分块、暂停恢复和客户端图像缩放。可与任何服务端平台(如PHP、Python、Ruby on Rails、Java、Node.js、Go等)一起使用,支持标准的HTML表单...