999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種在ruby on rails中圖片上傳與處理的方法

2011-01-01 00:00:00曹震中
電腦知識與技術 2011年4期

摘要:以SNS、BLOG等為代表的web2.0應用中,經常需要上傳圖片,而且要對圖片進行縮放處理,得到縮略圖。使用ruby on rails開發框架,通過attachment_Fu插件可以方便地實現所有這些功能。這大大提高了web應用的開發效率,符合用戶對web2.0應用持續開發、持續改進、持續創新的要求。

關鍵詞:ruby; rails;attachment_fu;ImageScience;web2.0

中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2011)04-0834-03

A Method of Image Upload and Processing on Ruby on Rails

CAO Zhen-zhong

(Institute of Computer Science, Qufu Normal University, Qufu 273165, China)

Abstract: The web2.0 applications(represented by SNS, BLOG etc.) often need to upload and handle pictures to get thumbnails. Using ruby on rails development framework, through attachment_fu plug-in can easily achieved all of these functions. This greatly improves the efficiency of web application development, meet user requirements to web2.0 application of continues develop, continuous improvement, continuous innovation.

Key words: ruby; rails; attachment_fu; ImageScience; web2.0

Ruby on Rails是一套web開發框架,它使用Ruby語言編寫。Ruby語言以自然、簡潔、快速著稱,全面支持面向對象程序設計。Rails是一套獨特的MVC開發架構,采取模型(Model)、視圖(View)、控制器(Controller)分離的開發方式,不但減少了開發中的問題,更簡化了許多繁復的動作。雖然在Rails出現之前,已經有了很多符合MVC規范的開發框架,比如Structs、Spring等等。但是Rails開發框架非常適合敏捷開發,其設計原則中的“不要重復自己”(Don't Repeat Yourself)和“約定勝于配置”(Convention Over Configuration)都深刻地體現了這一點。

Ruby on Rails的模型-視圖-控制器架構由以下各部分組成:

1)模型(Model)。模型包含著應用的狀態,通常是由一些關系數據庫中的表組成的。在Ruby on Rails中,一般來說,程序員要做的就是繼承ActiveRecord類,程序會自動計算出要使用哪個RDBMS表,這個表有哪些列。表與表之間的關系通過簡單的命令來指明。

2)控制器(Controller)。控制器將用戶界面和模型關聯起來,并充當協調運作的角色。它接收各種用戶操作,更新模型,并用合適的視圖(view)展示結果給用戶。

3)視圖(View)。視圖負責根據模型中的數據顯示。作為 web 應用,Rails 里的View通常是整個或者部分頁面,當然也可以是XML甚至是JavaScript代碼。

1 web應用中圖片上傳需求分析

越來越多的web應用需要提供圖片上傳功能。比如在SNS類應用中,用戶可以上傳頭像、簽名,還可以自主管理包含大量圖片的相冊。除此之外,這類web應用中還可能需要對圖片進行處理的功能,比如用戶上傳的頭像或者照片,在不同的頁面上可能需要不同的大小,有預覽圖和實際圖等。有的應用可能還允許用戶對圖片進行更加特殊的處理,比如模糊、銳化等等。

一般的web應用主要通過文件系統或者數據庫來存儲上傳的圖片文件,通過Form表單中的file標簽來實現圖片文件上傳。在Ruby on Rails應用中,當然也可以這樣來實現。不過,通過attachment_fu插件可以更加簡便地實現以上這些功能。

2 attachment_fu插件的安裝與使用

attachment_fu插件繼承自acts_as_attachment,后者本來是集成在Ruby on Rails框架中的,后來以插件的方式提供。

2.1 attachment_fu插件及其依賴庫的安裝

2.1.1 安裝圖形處理庫

如果僅僅需要改變圖片的大小,安裝FreeImage圖形處理庫和ImageScience就可以,如果需要更加復雜的處理,需要安裝ImageMagick圖形處理庫和RMagick。我們只介紹前者的安裝。在ubuntu server8.04中,通過以下兩個命令即可完成:

sudo apt-get install libfreeimage-dev

sudo gem install -y image_science

2.1.2 安裝attachment_fu插件

在Rails應用目錄下面運行如下命令:

script/plugin install http://svn.techno-weenie.net/projects/plugins/attachment_fu/

這樣就會把attachment_fu插件安裝至vender/plugins/目錄中。

2.2 attachment_fu插件的使用

attachment_fu支持四種圖片文件存儲方式:文件系統、數據庫、Amazon S3和Rackspace(Mosso)Cloud Files,我們選擇文件系統方式。為了能夠在Rails應用中使用attachment_fu插件,需要為圖片文件創建一個模型,這個模型主要存儲圖片文件的元數據,比如圖片的格式、大小等等。

2.2.1 創建模型

在Rails中,通過一個migration文件來創建這個模型對應的數據表結構:

class CreateResources < ActiveRecord::Migration

def self.up

create_table :resources do |t|

t.column :parent_id,:integer

t.column :content_type, :string

t.column :filename, :string

t.column :thumbnail, :string

t.column :size, :integer

t.column :width, :integer

t.column :height, :integer

end

end

def self.down

drop_table :resources

end

end

我們把存儲圖片文件元數據的表命名為resources。然后,編寫與resources表對應的Model文件:

class Resource < ActiveRecord::Base

has_attachment :content_type => :image,

:storage => :file_system,

:max_size => 500.kilobytes,

:thumbnails => { :thumb => '100x100>' }

validates_as_attachment

end

Resource類就是Ruby on Rails中對應數據表Resources的模型。has_attachment實際上是一個方法,其參數的含義如下:

:content_type:允許上傳的文件類型,設置為:image則允許所有的標準圖片文件格式,包括bmp、jpeg、png、gif等等。

:storage:設置圖片文件的存儲類型,設置為:file_system則存儲在web服務器的文件系統中。

:max_size:最大允許的圖片文件大小,我們設置為500K。

:thumbnails:這是一個集合,指定了圖片文件上傳之后,可以產生預覽圖的名字及其大小。在我們的例子里,我們指定了一種預覽圖,名字是thumb,大小是100x100像素。

2.2.2 編寫圖片文件上傳視圖

模型創建好之后,我們編寫支持圖片文件上傳的視圖,例如:

<%= error_messages_for :resource %>

<% form_for(:resource, :url => resources_path,

:html => { :multipart => true }) do |f| -%>

<%= f.file_field :uploaded_data %>

<%= submit_tag '上傳' %>

<% end -%>

2.2.3 編寫控制器

在控制器中,編寫如下代碼:

def create

@resource = Resource.new(params[:resource])

if @resource.save

flash[:notice] = '圖片資源成功上傳。'

redirect_to resource_url(@resource)

else

render :action => :new

end

end

2.2.4 圖片文件的使用

使用圖片文件時,只需要通過Resouce這個model就可以了,例如:

theResource = Resource.find 1

通過theResource.public_filename和theResource.public_filename(:thumb)就可以分別得到原始的圖片文件和大小是100x100的預覽圖片文件的url,從而把它們應用到視圖中。

3 結論

Ruby on Rails是一個開發效率非常高的web開發框架,在attachment_fu這樣的插件的輔助之下,能夠大大提高web應用開發效率,符合用戶對web2.0應用持續開發、持續改進、持續創新的需求。所以包括twitter這樣的網站在創始時都選擇了Ruby on Rails。可以預見,Ruby on Rails的應用前景會越來越廣。

參考文獻:

[1] 王威.基于Struts、Spring和Hibernate的帳票系統的設計與實現[D].大連:大連理工大學,2008.

[2] 王莉.Rails框架在Web開發中的研究與應用[D].大連:大連海事大學,2008.

[3] 張穎江.鄒慶北.基于XML配置式編程開發框架的研究與實現[J].軟件導刊,2007(9).

[4] 孫奧.黃燕.吳平.MVC模式在.NET框架中的應用與實現[J].科技廣場,2006(1).

[5] 范敏.用Struts構架實現WEB應用[J].電腦知識與技術,2005(9).

[6] 趙金東,于沛.一種輕量級Web應用建模方法[J].煙臺大學學報:自然科學與工程版,2004(2).

[7] 許蕾,徐寶文.Web應用測試框架研究[J].東南大學學報:自然科學版,2004(6).

[8] 丁昕苗.基于MVC模式的系統框架在Web開發中的應用[C]//2006通信理論與技術新進展——第十一屆全國青年通信學術會議論文集.2006.

主站蜘蛛池模板: 97视频精品全国免费观看| 国产91麻豆免费观看| 国产精品女人呻吟在线观看| 538国产视频| 99久久精品国产精品亚洲| 欧美色亚洲| 伊人久久综在合线亚洲2019| 日韩AV无码免费一二三区| 国产亚洲欧美在线专区| 亚洲av无码人妻| 美女无遮挡被啪啪到高潮免费| 色视频国产| 亚洲国产av无码综合原创国产| 亚洲小视频网站| 欧美曰批视频免费播放免费| 无遮挡国产高潮视频免费观看| 日韩在线中文| 国产精品网址你懂的| 丝袜美女被出水视频一区| 国产精品天干天干在线观看| 91福利国产成人精品导航| 91青青草视频在线观看的| 亚洲视频二| 67194亚洲无码| 国产高清精品在线91| 亚洲欧美成aⅴ人在线观看 | 成色7777精品在线| 三级欧美在线| 国产欧美精品午夜在线播放| 久久99精品久久久久久不卡| 国产国语一级毛片| 99在线视频精品| 日韩毛片免费观看| 国内熟女少妇一线天| 久久久久久久久18禁秘| 欧美中文字幕在线二区| 18禁黄无遮挡免费动漫网站| 永久成人无码激情视频免费| 免费一级全黄少妇性色生活片| 美女高潮全身流白浆福利区| 成人精品在线观看| 呦视频在线一区二区三区| 成人噜噜噜视频在线观看| 黄色网页在线播放| 中国成人在线视频| 欧美国产视频| 久久精品66| 亚洲第一色网站| 久久国产毛片| 国产性猛交XXXX免费看| 久久成人国产精品免费软件| 五月天综合婷婷| 欧美 国产 人人视频| a天堂视频| 婷婷六月综合网| 亚洲av日韩综合一区尤物| 久久精品国产国语对白| 亚洲黄网视频| 国禁国产you女视频网站| 亚洲午夜久久久精品电影院| 国产精品一线天| 自拍中文字幕| 亚洲精品欧美重口| 成人在线不卡| 91精品国产91久无码网站| 日本道综合一本久久久88| 欧美成人午夜视频免看| 在线综合亚洲欧美网站| 欧美国产日韩在线| 美女一级免费毛片| 国产人妖视频一区在线观看| 黄片一区二区三区| 国内a级毛片| 免费日韩在线视频| 日韩区欧美国产区在线观看| 国产美女91呻吟求| 国产主播喷水| 亚洲欧美人成人让影院| 欧美h在线观看| 中文字幕亚洲乱码熟女1区2区| 久久久久国色AV免费观看性色| 熟女日韩精品2区|