作者isfore (Midnight Blue)
看板Ruby
标题Re: [问题] 怎麽管理上传的档案呢?
时间Thu Dec 7 00:15:39 2006
※ 引述《isnora (nora)》之铭言:
: 各位前辈大家好,小弟最近开始学习ROR设计程式
: 但是今天遇到一个上传的问题,我不知道要怎麽把上传的档案传到我想要的目录
: 下,目前拿来学习的书是 Agile Web Development with Rails
: 这本书有一个上传的例子,但是它是将图片存到资料库里,但是我并不想要这麽
: 做,不知道有没有办法知道上传的位置…
: 我使用的 WEB SERVER 是 Mongrel ,我找了目录下的 tmp 也没有这些档案
: 救救我吧…
我想你遇到的问题应该是写档的问题。下面列举一个简单的例子。
def self.save(prefixPath, objFile)
# objFile 的 data type 测试
if (!objFile.kind_of? StringIO) && (!objFile.kind_of? Tempfile)
return false
end
# 检查预储存的路径是否存在,若否,则建立之
Dir.mkdir(prefixPath) if !FileTest.directory?(prefixPath)
if objFile.original_filename == ''
return false
else
# 检查在暂存目录下是否有同档名档案
if FileTest.exist?(prefixPath + '/' + objFile.original_filename)
# Policy 选择:重新命名或覆盖
end
# 将档案写入
wrtFilePath = prefixPath + '/' + objFile.original_filename
File.open(wrtFilePath, 'w') { |f|
# 做一些对 file 的限制,如大小等
if objFile.size <= $MAX_FILE_SIZE
f.write(objFile.read)
else
return false
end
}
return true
end
end
实际上要发挥 RoR 的 Active Record 以及其 OO 的本能,则应该是搭配 super 来做
Method overriding,比方说:
class Student < ActiveRecord::Base
def save
# 做一些档案写入,如图片上传
super # 做继承於 super class 的 method save
end
def destroy
# 做一些档案的删除
super # 做继承於 super class 的 method destroy
end
...
end
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.119.164.78
1F:推 isnora:太感谢了…我会好好的试试~ 12/07 07:08