1、【html 代码,主体是iframe与from表单的代码】
<span
style="margin-bottom:10px;"><a
href="#"
onclick="showdiv();"
title="iframe无刷新上传"
class="shortcut">[修改头像]</a></span>
<div
id="bg"></div>
<div
id="show">
<div
style="height:25px;line-height:25px;background-color:#EAEAEA;"><span
style="margin-left:5px">【上传】</span><span
style="float:right;"><a
href="javascript:void(0);"onclick="hidediv();">【X】</a></span></div>
<div
style="margin-top:10px;">
<iframe
style="display:none"
name="ifm"></iframe>
<form
action="/Index/uploadFiles"
target="ifm"
method="post"enctype="multipart/form-data">
上传文件:<input
type="file"name="headpic"
id="headpic"/> <input
type="submit"
name="sub"value="上传"
/>
</form>
</div>
</div>
注:from表单中的target属性是必须的,属性名称与iframe中的name属性名称须一致。
这是在一个遮罩层里的,遮罩层代码由css样式与js控制完成,如下:
Css代码:
<style
type="text/css">
#bg{
display: none;
position: absolute;
top: 0%;
left: 0%;
width: 100%;
height: 100%;
background-color: black;
z-index:1001;
-moz-opacity: 0.7;
opacity:.70;
filter: alpha(opacity=70);}
#show{display:
none; position:
absolute;
top: 25%;
left: 22%;
width: 53%;
height: 49%;
padding: 8px;
border: 8px solid #E8E9F7;
background-color: white;
z-index:1002;
overflow: auto;}
</style>
Js代码
<script
type="text/javascript"
type="text/javascript">
//显示遮罩层
function showdiv(){
document.getElementById("bg").style.display ="block";
document.getElementById("show").style.display ="block";
}
//取消遮罩层的显示
function hidediv(){
document.getElementById("bg").style.display ='none';
document.getElementById("show").style.display ='none';
}
//上传成功后调用
function callback(file_name){
//设置刚上传的图片路径
document.getElementById("headers").setAttribute("src", file_name);
hidediv ();
}
</script>
服务器处理上传代码(PHP语言):
if($_FILES['headpic']['error'] > 0){
echo "<script>alert('没有上传图片或图片有误!');</script>";
}else{
$myfile= $_FILES;
$size= 10*1024*1024;
if($myfile['headpic']['size']<=$size){
//判断类型
$fileInfo= pathinfo($myfile['headpic']['name']);
if($fileInfo['extension'] =='jpg'
|| $fileInfo['extension'] =='png'
|| $fileInfo['extension'] ==
'jpeg'){
$file_path= "./files/";
//$filename =date("YmdHis").mt_rand(100,999).".".$fileInfo['extension'];
$filename= date("Ymd-His").
"." .$fileInfo['extension'];
//$filename = iconv("UTF-8","GBK",$filename);
$extension= $fileInfo['extension'];
//上传文件的函数
if(move_uploaded_file($myfile['headpic']['tmp_name'],$file_path.$filename)){
//处理图片的规格开始
//return array("scanName" =>$filename,"errorMsg" => "success");
//echo $file_path . $filename;
$user= $this->Session->read("userInfo");
$ret= $this->Index->updateHeader($user[0]['xa']['id'], $filename);
if($ret){
echo
"<script>parent.callback('/files/". $filename .
"');</script>";
}else{
echo
"<script>alert('上传失败!');</script>";
}
}
}
}
}
这样基本上就可以完成iframe无刷新上传了!其实,利用iframe上传实现的无刷新上传,刷新的应该是iframe,在form表单中其实多了一个target属性,其名称与iframe中的name属性一致。如果没有target这个属性的话,就是跳转页面上传(自己的理解)。
分享到:
相关推荐
实例VS2010代码 dojo_iframe无刷新上传文件demo.rar dojo_iframe无刷新上传文件demo.rar dojo_iframe无刷新上传文件demo.rar dojo_iframe无刷新上传文件demo.rar dojo_iframe无刷新上传文件demo.rar
ajax iframe jsp 无刷新上传文件+JavaScript字符串函数大全+如何自定义Struts2表单验证后的错误信息显示格式样式
通过iframe和Jquery实现无刷新上传下载文件。项目是VS2010的。
出于安全考虑js是不能操作文件的,而ajax与后台通信都是通过传递字符串所以在jsp中使用iframe实现无刷新提交文件
但是用iFrame来实现无刷新上传文件确实一个很好的选择。ps:Ajax技术基本上可以说是由google公司带起来的,但少Gmail中上传文件用的还是 IFrame,所以说使用IFrame来上传文件是最好的选择。 我在这里这里用的技术是...
通过隐蔽iframe实现无刷新上传文件操作_.docx
但是用iFrame来实现无刷新上传文件确实一个很好的选择。 解决办法是通过一个隐藏的iframe来处理上传操作我采用的是ReactJS,amazeui,nodejs 1.html target指向iframe的name,就是把上传后的操作交给iframe来处理. &...
之前写过一个仿163网盘无刷新多文件上传系统,已经对无刷新上传文件的原理做了详细的分析。 而这次的系统主要是针对单个file控件的,便携版,使用更简单,还有更深入的分析。 兼容:ie6/7/8, firefox 3.5.5, opera ...
php+jquery无刷新上传图片,应用iframe实现,
本文实例讲述了asp.net中MVC借助Iframe实现无刷新上传文件的方法。分享给大家供大家参考。具体实现方法如下: html: 代码如下:”uploadwindow” xss=removed> <form action=”/ShopActivitys/...
发请求有两种方式,一种是用ajax,另一种是用form提交,默认的form提交如果不做处理的话,会使页面...本篇文章通过实例给大家介绍基于iframe/FormData/FileReader三种无刷新上传文件的方法,感兴趣的朋友一起学习吧
AJAX无法实现文件上传功能,原因是JavaScript安全限制不能对文件执行操作,但是通过IFRAME框架可以模拟实现无刷新效果。虽说是无刷新的,但状态栏会刷新一下。代码是一个JSP的示例。
首先ajax不能上传文件,这误导了我有段时间,今晚睡不着就照着说明做了个无刷新上传文件 其实原理很简单 复制代码 代码如下: <form enctype=”multipart/form-data” method=”POST” target=”upload” action=...
但是用iFrame来实现无刷新上传文件确实一个很好的选择。ps:Ajax技术基本上可以说是由google公司带起来的,但少Gmail中上传文件用的还是 IFrame,所以说使用IFrame来上传文件是最好的选择。 我在这里这里用的技术...
在页面元素中include一个php文件,会在dom中增加一个上传文件的按钮,在dom尾部追加一个隐藏的iframe以及一个隐藏的form表单用于实现无刷新上传文件和调用页面js方法实现回调操作。 全部的配置在config.php
PHP无刷新上传图片,Ajax图片无刷新新上传程序,可一次上传多张图片,批量上传图片,显示上传进度条,程序只允许GIF/JPG格式的图像上传,允许其它格式请修改代码,上传程序运行界面如图所示,界面简洁,功能实用,非...
使用jquery.ajaxfileupload.js实现无刷性上传文件,此插件的原理是在文档中创建iframe和form然后在将文件上传到服务器。在此感觉原创作者。