我是新手,所以要做文件上传功能时,花费了一点的时间,解决之后总结一下。先说前台,前台我用的是
<form name="upload_file" id="upload_file" accept="application/msexcel" method="post" enctype="multipart/form-data" action="XXXX.ci" target="hidden_frame">
<input type="text" id="filepath" name="filepath">
<input name="export_file" id="export_file" type="file" onchange ="showPath();">
<div><input type="submit" value="导入"></div></form>
<iframe style="display:none;" name="hidden_frame" id="hidden_frame"></iframe>
解释一下,
accept=""是限制上传格式的,enctype=""是不可缺少的,action=""是要调用的cgi程序,target=""是要提交的iframe。因为我需要把上传的文件的内容写入到数据库中,然后还要返回文件的内容,但是不能刷新页面,所以我用隐藏的iframe来接受返回的值。那怎么才能获取到iframe中的值,并显示到知道区域中呢?我初开始想着取iframe中的值,但是试了好久不行,不能达到想要的结果,所以经过多次努力和大神们的指点再加上我的悟性,终于克服了这一难题。后台程序示例代码如下:
<script type=“text/javascript”>parent.func('XXX');</script>
后台CGI程序只需返回一段script代码即可。parent.func('XXX'):是在前台定义的一个js函数,func是函数名(可以随意取),XXX是要返回的值,这样会自动调用前台的js函数,来完成显示返回内容的功能。在返回文件内容的时候,又遇到了一个问题就是
单引号中嵌套单引号的问题,这样返回的时候会出现问题,我的解决方法是将parent.func('xxx
'ccc'aaa')中的'ccc'替换为"ccc"即可。