宝典:第十式 无插件文件上传

本文介绍了一种通过网页上传并显示Excel文件的方法。利用Rails框架实现了文件上传功能,并通过JavaScript增强用户体验,允许用户一次性选择多个文件进行上传。此外,还提供了在服务器端处理上传文件的代码示例。
本来想做一个的是一个用户直接选定EXCEL文件提交后将信息显示到页面
但是这个HTTP不让做,所以就做了个先上传到服务器再操作.
先说说我是怎么实现上传的吧!
首先试图就不用说了,看下就知道了

<script language="javascript">
HTMLElement.prototype.insertAdjacentHTML=function(where, html)
{
var e=this.ownerDocument.createRange();
e.setStartBefore(this);
e=e.createContextualFragment(html);
switch (where){
case 'beforeBegin': this.parentNode.insertBefore(e, this);break;
case 'afterBegin': this.insertBefore(e, this.firstChild); break;
case 'beforeEnd': this.appendChild(e); break;
case 'afterEnd':
if(!this.nextSibling) this.parentNode.appendChild(e);
else this.parentNode.insertBefore(e, this.nextSibling); break;
}
}
function addText(){
var str ='<input id="file1" name="file[]" size="30" type="file" /></br> <input type="text" id="uploadfile_description" name="names[]"></br>';
document.getElementById('MyFile').insertAdjacentHTML("beforeEnd",str);
}
</script>

<%form_tag ({:action=>"upload"},:multipart=>true ) do %>
<div id="MyFile">
文件路径:<input id="file" name="file[]" size="30" type="file" /><br>
保存文件名 <input type="text" id="uploadfile_description" name="names[]">(无须填写后缀)<br>
</div><input type="button" value="添加多个" onclick="addText()"/>
<input style="cursor:pointer" type="submit" value="上传"/>
<%end%>

添加了一些JS, 用于同时提交多个文件.

然后就是控制器了

def upload    
unless request.get?
i=params[:file].size
for num in (0..i-1)
if params[:file][num].original_filename[-3,3] == "xls"
filename = uploadFile(params[:file][num],params[:names][num])
else
flash[:notice] = "上传失败,上传的并非EXCEL文件!"
end
end
end
end

protected

def uploadFile(file,filenames)
if !file.original_filename.empty?
@filename = getFileName(file.original_filename,filenames)
File.open("#{RAILS_ROOT}/excel/#{@filename}", "wb") do |f|
f.write(file.read)
end
return @filename
end
end
def getFileName(filename,filenames)
if !filename.nil?
filename = filenames+".xls"
return filename
end
end

这里需要解释下的是, 文件将保存在RAILS_ROOT/excel/文件夹里面,这个可以根据需要改变.
依照上面应该能将文件成功保存到EXCEL文件夹下面
顺带现实文件夹下文件的方法.
辅助方法里面些上这些

require 'find'
def root_excel
options = Array.new
Find.find(RAILS_ROOT + "/excel") do |lang|
if lang =~ /\.xls$/
lang_pattern = File.basename(lang)
options << lang_pattern
end
end
options
end

再在试图中加上

<%for excel in root_excel%>
<%=excel%>
<%end%>


EXCEL的文件就能显示出来了

上传了就可以去显示了
[url]http://sayid2008.iteye.com/blog/188472[/url]提供显示
数据驱动的两阶段分布鲁棒(1-范数和∞-范数约束)的电热综合能源系统研究(Matlab代码实现)内容概要:本文围绕“数据驱动的两阶段分布鲁棒(1-范数和∞-范数约束)的电热综合能源系统研究”展开,提出了一种结合数据驱动与分布鲁棒优化方法的建模框架,用于解决电热综合能源系统在不确定性环境下的优化调度问题。研究采用两阶段优化结构,第一阶段进行预决策,第二阶段根据实际场景进行调整,通过引入1-范数和∞-范数约束来构建不确定集,有效刻画风电、负荷等不确定性变量的波动特性,提升模型的鲁棒性和实用性。文中提供了完整的Matlab代码实现,便于读者复现和验证算法性能,并结合具体案例分析了不同约束条件下系统运行的经济性与可靠性。; 适合人群:具备一定电力系统、优化理论和Matlab编程基础的研究生、科研人员及工程技术人员,尤其适合从事综合能源系统、鲁棒优化、不确定性建模等相关领域研究的专业人士。; 使用场景及目标:①掌握数据驱动的分布鲁棒优化方法在综合能源系统中的应用;②理解1-范数和∞-范数在构建不确定集中的作用与差异;③学习两阶段鲁棒优化模型的建模思路与Matlab实现技巧,用于科研复现、论文写作或工程项目建模。; 阅读建议:建议读者结合提供的Matlab代码逐段理解算法实现细节,重点关注不确定集构建、两阶段模型结构设计及求解器调用方,同时可尝试更换数据或调整约束参数以加深对模型鲁棒性的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值