Iframe 无刷新上传文件

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"/>&nbsp;&nbsp;<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这个属性的话,就是跳转页面上传(自己的理解)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值