上传文件(无插件方式)转

1。Model

我创建了一张表:mysql> describe photos;
+------------+--------------+------+-----+---------------------+---------------
+
| Field | Type | Null | Key | Default | Extra
|
+------------+--------------+------+-----+---------------------+---------------
+
| id | int(11) | NO | PRI | NULL | auto_increment
|
| album_id | int(11) | YES | MUL | 1 |
|
| url | varchar(255) | NO | | NULL |
|
| name | varchar(255) | YES | | NULL |
|
| created_at | datetime | YES | | 0000-00-00 00:00:00 |
|
+------------+--------------+------+-----+---------------------+---------------

generate 一个model:

class Photo < ActiveRecord::Base
end
不需要任何代码,当然也可以添加检查代码:
validates_format_of :url,
:with=>/^.*(.jpg|.JPG|.gif|.GIF)$/,
:message => "你只能上传JPG或则GIF的图片文件"

2。controller

#以下是关于文件上传的代码
before_filter :configure_charsets

def configure_charsets
@headers["Content-Type"]="text/html;charset=utf-8"
end

def upload

end

def upload_file(file)
if !file.original_filename.empty?
@filename=get_file_name(file.original_filename)
File.open("#{RAILS_ROOT}/public/uploads/#{@filename}", "wb") do |f|
f.write(file.read)
end
return @filename
end
end

def get_file_name(filename)
if !filename.nil?
Time.now.strftime("%Y%m%d%H%M%S") + '_' + filename
end
end

def save_file
unless request.get?
if filename=upload_file(params[:file]['file'])
return filename
end
end
end
#==============================
# 修改create方法:

def create
@photo = Photo.new(params[:photo])
@filename=save_file #调用save_file方法,返回文件名
@photo.url="/uploads/#{@filename}" #保存文件路径字段
@photo.name=(@filename)[15,@filename.length] #保存文件名字段
if @photo.save
flash[:notice] = 'Photo was successfully created.'
redirect_to :action => 'list'
else
render :action => 'new'
end
end

3。View

修改:_form.rhtml

Upload your file: <%= file_field("file", "file") %>

修改:new.rhtml

<h1>New photo</h1>
<%= form_tag({:action => 'create'}, :multipart => true) %>
<%= render :partial => 'form' %>
<%= submit_tag("Upload file") %>
<%= end_form_tag %>

修改:show.rhtml
<%= image_tag url_for_file_column("entry", "image") %>
不行的话,用<img src='<%=@photo.url%>'.....

这里,没有用到任何有关文件上传的插件。所以,用起来比较单纯,上传的文件都放在路径/public/uploads/
光伏储能虚拟同步发电机并网仿真模型(Simulink仿真实现)内容概要:本文介绍了基于Simulink的光伏储能虚拟同步发电机(VSG)并网仿真模型,旨在通过建立光伏发电系统与储能系统的集成模型,结合虚拟同步发电机技术,实现对电网的友好接入与稳定支撑。该模型充分考虑了光伏出力的波动性和间歇性,利用储能系统平抑功率波动,并通过VSG控制策略模拟同步发电机的惯性和阻尼特性,提升系统频率和电压调节能力。文中详细阐述了各模块的设计与实现,包括光伏阵列、储能单元、双向变流器及VSG控制算法,并在Simulink环境中完成整体建模与仿真验证,展示了系统在并网运行下的动态响应性能。; 适合人群:电气工程、自动化、新能源等相关专业的研究生、科研人员及从事电力系统仿真与控制的技术人员。; 使用场景及目标:①用于研究高比例可再生能源接入背景下电力系统的稳定性问题;②为虚拟同步机控制策略的设计与优化提供仿真平台;③支持微电网、智能电网中的源网协调控制技术开发与教学实验。; 阅读建议:建议读者结合Simulink软件动手搭建模型,深入理解各模块参数设置与控制逻辑,重点关注VSG的有功-频率、无功-电压调控机制,并可通过改变光照强度、负载扰动等条件进行仿真实验,分析系统动态特性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值