- 浏览: 2072262 次
- 性别:
- 来自: NYC
文章分类
- 全部博客 (628)
- Linux (53)
- RubyOnRails (294)
- HTML (8)
- 手册指南 (5)
- Mysql (14)
- PHP (3)
- Rails 汇总 (13)
- 读书 (22)
- plugin 插件介绍与应用 (12)
- Flex (2)
- Ruby技巧 (7)
- Gem包介绍 (1)
- javascript Jquery ext prototype (21)
- IT生活 (6)
- 小工具 (4)
- PHP 部署 drupal (1)
- javascript Jquery sort plugin 插件 (2)
- iphone siri ios (1)
- Ruby On Rails (106)
- 编程概念 (1)
- Unit Test (4)
- Ruby 1.9 (24)
- rake (1)
- Postgresql (6)
- ruby (5)
- respond_to? (1)
- method_missing (1)
- git (8)
- Rspec (1)
- ios (1)
- jquery (1)
- Sinatra (1)
最新评论
-
dadadada2x:
user模型里加上 protected def email ...
流行的权限管理 gem devise的定制 -
Sev7en_jun:
shrekting 写道var pattern = /^(0| ...
强悍的ip格式 正则表达式验证 -
jiasanshou:
好文章!!!
RPM包rpmbuild SPEC文件深度说明 -
寻得乐中乐:
link_to其实就是个a标签,使用css控制,添加一个参数: ...
Rails在link_to中加参数 -
aiafei0001:
完全看不懂,不知所然.能表达清楚一点?
"$ is not defined" 的问题怎么办
前提是需要安装FFMPEG,实现视频转换和上传我们需要一些插件
Paperclip
没什么好多说,历史的选择,上传还是这个
Github
Acts As State Machine
状态机支持,也经常用到
关于状态机,这个讨论很有味道,建议了解
创建Model
First off, let’s create our video model. We’ll call it video. Inventive, eh?
可以看到代码生成如下:
使用过Paperclip,会习惯用source保存上传的大文件
添加状态
运行 Migrations
migration文件如下:
其中source_ 是用来给Paperclip上传文件, state字段是给acts_as_state_machine
运行命令如下:
添加转换方法
在 video.rb文件中添加如下方法用来处理转换
控制器中
控制器将如下,上传的view比较容易,唯一注意的是应该给form注明:multipart => true
After the video is saved in the create method, the convert method is called. This should convert the video to a flash video file, update the database entry and set the state of the model. The state will be set to converted if everything went to plan, or error if everything went to shit.
完整的video.rb文件可以看这里
在页面显示视频
显示视频的方案当前有两个
SWFObject
JW FLV Media Player
前者是javascript的嵌入Adobe Flash,优势是搜索支持,后者支持多种转换格式FLV, but also MP3, H264, SWF, JPG, PNG and GIF)。
介绍后一个要加载 swfobject.js文件
将mediaplayer.swf放到public/flash/mediaplayer.swf
标准的JW FLV Player安装介绍
最后,
使用rails转换视频之 安装FFMPEG
Paperclip
没什么好多说,历史的选择,上传还是这个
Github
Acts As State Machine
状态机支持,也经常用到
关于状态机,这个讨论很有味道,建议了解
ruby script/plugin install
创建Model
First off, let’s create our video model. We’ll call it video. Inventive, eh?
ruby script/generate model video
可以看到代码生成如下:
class Video < ActiveRecord::Base # Paperclip # http://www.thoughtbot.com/projects/paperclip has_attached_file :source # Paperclip Validations validates_attachment_presence :source validates_attachment_content_type :source, :content_type => 'video/quicktime' end
使用过Paperclip,会习惯用source保存上传的大文件
添加状态
# Acts as State Machine # http://elitists.textdriven.com/svn/plugins/acts_as_state_machine acts_as_state_machine :initial => :pending state :pending state :converting state :converted, :enter => :set_new_filename state :error event :convert do transitions :from => :pending, :to => :converting end event :converted do transitions :from => :converting, :to => :converted end event :failed do transitions :from => :converting, :to => :error end
运行 Migrations
migration文件如下:
class CreateVideos < ActiveRecord::Migration def self.up create_table :videos do |t| t.string :source_content_type t.string :source_file_name t.integer :source_file_size t.string :state t.timestamps end end def self.down drop_table :videos end end
其中source_ 是用来给Paperclip上传文件, state字段是给acts_as_state_machine
运行命令如下:
rake db:migrate
添加转换方法
在 video.rb文件中添加如下方法用来处理转换
# This method is called from the controller and takes care of the converting def convert self.convert! success = system(convert_command) if success && $?.exitstatus == 0 self.converted! else self.failure! end end protected # This method creates the ffmpeg command that we'll be using def convert_command flv = File.join(File.dirname(source.path), "#{id}.flv") File.open(flv, 'w') command = <<-end_command ffmpeg -i #{ source.path } -ar 22050 -ab 32 -acodec mp3 -s 480x360 -vcodec flv -r 25 -qscale 8 -f flv -y #{ flv } end_command command.gsub!(/\s+/, " ") end # This update the stored filename with the new flash video file def set_new_filename update_attribute(:source_file_name, "#{id}.flv") end
控制器中
控制器将如下,上传的view比较容易,唯一注意的是应该给form注明:multipart => true
class VideosController < ApplicationController def index @videos = Video.find :all end def new @video = Video.new end def create @video = Video.new(params[:video]) if @video.save @video.convert flash[:notice] = 'Video has been uploaded' redirect_to :action => 'index' else render :action => 'new' end end def show @video = Video.find(params[:id]) end end
引用
After the video is saved in the create method, the convert method is called. This should convert the video to a flash video file, update the database entry and set the state of the model. The state will be set to converted if everything went to plan, or error if everything went to shit.
完整的video.rb文件可以看这里
在页面显示视频
显示视频的方案当前有两个
SWFObject
JW FLV Media Player
前者是javascript的嵌入Adobe Flash,优势是搜索支持,后者支持多种转换格式FLV, but also MP3, H264, SWF, JPG, PNG and GIF)。
介绍后一个要加载 swfobject.js文件
<%= javascript_include_tag 'swfobject' %>
将mediaplayer.swf放到public/flash/mediaplayer.swf
<div id="player"> You need to have <%= link_to 'Flash Player', 'http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash' %> installed to display this video </div> <script type="text/javascript"> var so = new SWFObject('/flash/mediaplayer.swf', 'mpl', '480', '360', '8'); so.addParam('allowscriptaccess', 'always'); so.addParam('allowfullscreen', 'true'); so.addVariable('height', '360'); so.addVariable('width', '480'); so.addVariable('file', '<%= @video.source.url %>'); so.write('player'); </script>
引用
The contents of the div will be replaced with the flash player, if flash isn't installed the user is shown a message with a link to download flash player. The <%= @video.source.url %> line will output the path to the flv video file.
标准的JW FLV Player安装介绍
最后,
使用rails转换视频之 安装FFMPEG
- videorb.zip (1.4 KB)
- 下载次数: 29
发表评论
-
Destroying a Postgres DB on Heroku
2013-04-24 10:58 927heroku pg:reset DATABASE -
VIM ctags setup ack
2012-04-17 22:13 3255reference ctags --extra=+f --e ... -
alias_method_chain方法在3.1以后的替代使用方式
2012-02-04 02:14 3287alias_method_chain() 是rails里的一个 ... -
一些快速解决的问题
2012-01-19 12:35 1470问题如下: 引用Could not open library ... -
API service 安全问题
2011-12-04 08:47 1379这是一个长期关注的课题 rest api Service的 ... -
Module方法调用好不好
2011-11-20 01:58 1344以前说,用module给class加singleton方法,和 ... -
一个ajax和rails交互的例子
2011-11-19 01:53 1903首先,这里用了一个,query信息解析的包,如下 https: ... -
Rails 返回hash给javascript
2011-11-19 01:43 2272这是一个特别的,不太正统的需求, 因为,大部分时候,ajax的 ... -
关于Rubymine
2011-11-18 23:21 2262开个帖子收集有关使用上的问题 前一段时间,看到半价就买了。想 ... -
ruby中和javascript中,动态方法的创建
2011-11-18 21:01 1234class Klass def hello(*args) ... -
textmate快捷键 汇总
2011-11-16 07:20 8138TextMate 列编辑模式 按住 Alt 键,用鼠标选择要 ... -
Ruby面试系列六,面试继续面试
2011-11-15 05:55 2018刚才受到打击了,充分报漏了自己基础不扎实,不肯向虎炮等兄弟学习 ... -
说说sharding
2011-11-13 00:53 1481这个东西一面试就有人 ... -
rails面试碎碎念
2011-11-12 23:51 1939面试继续面试 又有问ru ... -
最通常的git push reject 和non-fast forward是因为
2011-11-12 23:29 17209git push To git@github.com:use ... -
Rails 自身的many to many关系 self has_many
2011-11-12 01:43 2731简单点的 #注意外键在person上people: id ... -
Rails 3下的 in place editor edit in place
2011-11-12 01:20 945第一个版本 http://code.google.com/p ... -
Heroku 的诡异问题集合
2011-11-11 07:22 1691开个Post记录,在用heroku过程中的一些诡异问题和要注意 ... -
SCSS 和 SASS 和 HAML 和CoffeeScript
2011-11-07 07:52 12952Asset Pipeline 提供了内建 ... -
Invalid gemspec because of the date format in specification
2011-11-07 02:14 2115又是这个date format的错误。 上次出错忘了,记录下 ...
相关推荐
通过上述内容,我们可以看到Paperclip为Rails应用中的文件上传提供了强大的功能和灵活性。无论是简单的图片上传还是复杂的文件管理,Paperclip都能轻松应对。在实际开发中,可以根据项目需求对这些知识点进行深入...
2. 文件格式控制:插件可以控制文件的格式,限制上传的文件类型,例如限制上传图片、文档、音频、视频等。 3. 文件数量控制:插件可以控制上传文件的数量,限制上传文件的个数。 4. 多浏览器兼容:插件兼容多种...
在Rails框架中处理文件上传时,经常会遇到一个问题,那就是当用户尝试上传包含中文名称的文件时,文件名可能会出现乱码。这个问题主要是由于字符编码不兼容导致的。Rails默认使用UTF-8编码,但文件系统或者某些外部...
在Ruby on Rails框架中,...通过理解以上知识点,你将能够构建一个功能完善的Rails文件上传系统,确保用户能安全、便捷地上传和管理他们的文件。在实际项目中,还需要考虑性能优化、错误处理和用户体验等方面的问题。
这通常涉及将证书文件和私钥上传到服务器,并在Rails应用中配置它们。 7. **Heroku与SSL**:如果你的应用托管在Heroku上,可以通过Heroku的控制台或CLI轻松添加和管理SSL证书。 8. **HSTS...
这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何利用Rails的强大功能来创建一个允许用户上传、分享和浏览图片的应用。 1. **Rails框架基础**: Rails的核心理念是DRY(Don't...
这里我们假设使用jQuery,配合jQuery File Upload插件,它提供了一个简单的API来处理文件上传和进度事件。 1. **安装jQuery和jQuery File Upload** 在`Gemfile`中添加`jquery-rails` gem,然后运行`bundle install...
为了运行和测试应用,你需要在命令行中使用Rails服务器。在Aptana中,可以使用内置的终端工具。打开“Terminal”视图,输入`rails server`启动服务器,然后在浏览器中访问`http://localhost:3000`查看你的应用。 在...
Rails 3.1 和 Cucumber-Rails 1.2.0 是两个在Web开发领域非常重要的工具,尤其对于Ruby on Rails框架的测试和自动化流程。本文将深入探讨这两个组件,以及它们如何协同工作来增强软件开发的效率和质量。 首先,...
Ruby on Rails(简称Rails)是一种流行的Web开发框架,以其“约定优于配置”的理念和高效的开发速度受到开发者喜爱。而Go(Golang)则是一种静态类型、编译型的语言,以其高性能、简洁的语法和强大的并发能力闻名。...
- 安装Rails: 使用gem工具安装最新的Rails版本。 - 测试安装: 创建一个简单的Rails应用来验证是否成功安装。 #### 五、练习作业0-Hello World - **目标**: - 学习如何创建第一个Rails应用程序。 - **过程**: -...
jquery-fileupload-rails, 用于 Rails的jQuery文件上传集成 Rails 文件上传jQuery-File-Plugin 是一个文件上传插件,由的Tschan 。 jQuery文件上传功能多文件选择。drag&拖放支持。进度栏和jQuery预览图像。 支持...
本章节将介绍如何安装、使用和开发自己的Rails插件。插件可以提供新的特性或增强现有功能,帮助开发者更快地完成项目。 #### 11. Debugging, Testing, and Benchmarking(调试、测试和基准测试) 高质量的软件离不...
《Rails101_by_rails4.0》是一本专注于Rails 4.0.0版本和Ruby 2.0.0版本的自学教程书籍,它定位于中文读者,旨在成为学习Rails框架的参考教材。Rails(Ruby on Rails)是一个采用Ruby语言编写的开源Web应用框架,它...
综合以上信息,学习和掌握Rails需要理解其核心组件和设计理念,熟练使用相关工具,阅读源码以加深对框架运作的理解,并通过实践项目来巩固理论知识。Rails是一个强大且高效的Web开发框架,它简化了许多常见的开发...
7. **Rails插件与Gem**:Rails社区提供了丰富的插件和Gem,如Devise用于身份验证,Paperclip或Carrierwave处理文件上传,Resque或Sidekiq实现后台任务队列。掌握如何选择和使用这些工具来扩展应用功能。 8. **Rails...