Class: ActFunc::Fileupload
- Inherits:
-
Object
- Object
- ActFunc::Fileupload
- Defined in:
- lib/act_func/fileupload.rb
Class Method Summary collapse
-
.file_format(filename) ⇒ Object
get file format params: filename->file’s name return: file format ‘.jpg’,‘.exe’.
-
.filename_validata(file, rule) ⇒ Object
validate file format params: file-> file stream; rule-> validate rule (“jpg|xls”) return: validate result -> true | false.
-
.getname(filestream, filepath) ⇒ Object
get new file’s name params:filestream->file stream file name,filepath->file save path return:new file’s name.
-
.imageupload(imgfile, filepath = "", rule = "jpg|jpeg", minsize = 0, maxsize = 2000, w = 0, h = 0) ⇒ Object
image upload params: file->file stream; filepath->file save path; rule->can upload file format(“jpg|xls”); minsize and maxsize->minsize<file’s size<maxsize; w->new image width, h->new image height return: true, result: “new filename” or false, result: “error message”.
-
.resize(imagepath, w, h) ⇒ Object
image resize params: imagepath-> image file path; w-> new image width; h-> new image height.
-
.rmdir(dir) ⇒ Object
delete dir params: dir-> dir path return true or false.
-
.rule_validata(file, rule, minsize, maxsize) ⇒ Object
validate file params:file->file stream,rule->can upload file format,minsize<file’s size<maxsize return:true or return false, message: “error message”.
-
.upload(file, filepath = "", rule = "jpg|xls", minsize = 1, maxsize = 4000) ⇒ Object
file upload params: file->file stream,filepath->file save path,rule->can upload file format(“jpg|xls”),minsize and maxsize->minsize<file’s size<maxsize return: true, result: “new filename” or false, result: “error message”.
Class Method Details
.file_format(filename) ⇒ Object
get file format params: filename->file’s name return: file format ‘.jpg’,‘.exe’
66 67 68 |
# File 'lib/act_func/fileupload.rb', line 66 def Fileupload.file_format(filename) /\.[^\.]+$/.match(filename)[0] end |
.filename_validata(file, rule) ⇒ Object
validate file format params: file-> file stream; rule-> validate rule (“jpg|xls”) return: validate result -> true | false
45 46 47 |
# File 'lib/act_func/fileupload.rb', line 45 def Fileupload.filename_validata(file, rule) !eval("/\.(#{rule})+$/").match(file.original_filename).blank? end |
.getname(filestream, filepath) ⇒ Object
get new file’s name params:filestream->file stream file name,filepath->file save path return:new file’s name
52 53 54 55 56 57 58 59 60 61 |
# File 'lib/act_func/fileupload.rb', line 52 def Fileupload.getname(filestream, filepath) file_for = Fileupload.file_format(filestream.original_filename) filename = Time.now.strftime("%Y%m%d%h%m%s")<<rand(99999).to_s<<file_for file = filepath+filename while File.exist?(file) do filename = Time.now.strftime("%Y%m%d%h%m%s")<<rand(99999).to_s<<file_for file = filepath+filename end filename end |
.imageupload(imgfile, filepath = "", rule = "jpg|jpeg", minsize = 0, maxsize = 2000, w = 0, h = 0) ⇒ Object
image upload params: file->file stream; filepath->file save path; rule->can upload file format(“jpg|xls”); minsize and maxsize->minsize<file’s size<maxsize; w->new image width, h->new image height return: true, result: “new filename” or false, result: “error message”
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/act_func/fileupload.rb', line 73 def Fileupload.imageupload(imgfile, filepath="", rule="jpg|jpeg", minsize=0, maxsize=2000, w=0, h=0) result = Fileupload.rule_validata(imgfile, rule, minsize, maxsize) if result[:state] sname = Fileupload.getname(imgfile, filepath) begin unless Dir::exist?(filepath) unless system("mkdir -p #{filepath}") return {state: false, result: "目录创建失败,请于管理员联系"} end end File.open(filepath+sname, "wb") do |f| f.write(imgfile.read) end Fileupload.resize(filepath + sname, w, h) return {state: true, result: sname} rescue return {state: false, result: "写入图片失败:#{$!}"} end else return {state: false, result: result[:message]} end end |
.resize(imagepath, w, h) ⇒ Object
image resize params: imagepath-> image file path; w-> new image width; h-> new image height
105 106 107 108 109 110 111 112 113 |
# File 'lib/act_func/fileupload.rb', line 105 def Fileupload.resize(imagepath, w, h) img = Magick::Image.read(imagepath)[0] if w==0 || h==0 w=img.columns h=img.rows end newimg = img.resize_to_fill(w, h) newimg.write(imagepath) end |
.rmdir(dir) ⇒ Object
delete dir params: dir-> dir path return true or false
99 100 101 |
# File 'lib/act_func/fileupload.rb', line 99 def Fileupload.rmdir(dir) system("rm -rf #{dir}") end |
.rule_validata(file, rule, minsize, maxsize) ⇒ Object
validate file params:file->file stream,rule->can upload file format,minsize<file’s size<maxsize return:true or return false, message: “error message”
31 32 33 34 35 36 37 38 39 40 |
# File 'lib/act_func/fileupload.rb', line 31 def Fileupload.rule_validata(file, rule, minsize, maxsize) rule_for = Fileupload.filename_validata(file, rule) unless rule_for return {state: false, message: "错误:文件格式不对,只允许上传#{rule}格式!\\n"} end if file.size<minsize*1024 || file.size>maxsize*1024 return {state: false, message: "错误:文件大小错误,只允许#{minsize}kb~#{maxsize}kb!\\n"} end return {state: true} end |
.upload(file, filepath = "", rule = "jpg|xls", minsize = 1, maxsize = 4000) ⇒ Object
file upload params: file->file stream,filepath->file save path,rule->can upload file format(“jpg|xls”),minsize and maxsize->minsize<file’s size<maxsize return: true, result: “new filename” or false, result: “error message”
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/act_func/fileupload.rb', line 6 def Fileupload.upload(file, filepath="", rule="jpg|xls", minsize=1, maxsize=4000) result = Fileupload.rule_validata(file, rule, minsize, maxsize) if result[:state] sname = Fileupload.getname(file, filepath) begin unless Dir::exist?(filepath) unless system("mkdir -p #{filepath}") return {state: false, result: "目录创建失败,请于管理员联系"} end end File.open(filepath+sname, "wb") do |f| f.write(file.read) end return {state: true, result: sname} rescue return {state: false, result: "写入文件失败:#{$!}"} end else return {state: false, result: result[:message]} end end |