为了账号安全,请及时绑定邮箱和手机立即绑定

php 异步上传图片几种方法总结

要实现异步上传图片方法有常用的有二种,一种是利用iframe实现,另一种是借助于ajax来实现一般用第三方插件了。

上传图片form提交target到一个隐藏的iframe里,

<form action="upload.php" id="form1" name="form1" enctype="multipart/form-data" method="post" target="uploadIframe"> 
<!--上传图片页面  --> 
</form>

然后后台处理完上传图片逻辑后返回给前台,利用ajax修改当前页面DOM对象实现无刷新上传图片的友好功能。

实例

 <form enctype="multipart/form-data" action="a.php" target="ifram_sign" method="POST">
        <input name="submit" id="submit" value="" type="hidden">
        <label>上传文件: <input name="test_file" type="file" id="test_file" size="48"></label>
        <input type="image" value="立即上传" id="submit_btn">
 </form>
<iframe name="ifram_sign" class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="" frameborder="0" height="0" width="0" marginheight="0" marginwidth="0"></iframe>

PHP代码:

<?php
if ($_FILES["test_file"]["error"] > 0)
  {
  echo "Error: " . $_FILES["test_file"]["error"] . "<br />";
  }
else
  {
//这里的判断图片属性的方法就不写了。自己扩展一下。
  $filetype=strrchr($_FILES["test_file"]["name"],".");
  $filetype=substr($filetype,1,strlen($filetype)); 
  $filename="img/".time("YmdHis").".".$filetype;
  move_uploaded_file($_FILES["test_file"]["tmp_name"],$filename);
  echo '<script >alert(1)</script>';
  $return="parent.document.getElementByIdx_x('mpic".$pageset_id."').innerHTML='".$dataimgpath."'";
  echo "<script >alert('上传成功')</script>";
  echo "<script>{$return}</script>";
  }
?>

其实jquery ajax图片异步上传

HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"    "1/DTD/xhtml1-transitional.dtd">
<html xmlns="" lang="en_US" xml:lang="en_US">
<head>  <title>图片异步上传</title></head>
<script type="text/javascript" class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="js/jquery.js"></script>
<script type="text/javascript" class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="js/index.js"></script>
<link type="text/css" rel="stylesheet" href="css/index.css">
<body> 
    <div class="frm">
      <form name="uploadFrom" id="uploadFrom" action="upload.php" method="post"  target="tarframe" enctype="multipart/form-data">   
          <input type="file" id="upload_file" name="upfile">  
      </form>  
      <iframe class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original=""  width="0" height="0"  name="tarframe">
      </iframe> 
    </div> 
    <div id="msg"> 
    </div>
</body>
</html>
index.js
$(function(){ $("#upload_file").change(function(){   $("#uploadFrom").submit(); });});
function stopSend(str){ var im="<img src='upload/images/"+str+"'>"; $("#msg").append(im);
}

upload.php

<?php 
$file=$_FILES['upfile']; 
$name=rand(0,500000).dechex(rand(0,10000)).".jpg"; 
move_uploaded_file($file['tmp_name'],"upload/images/".$name);
//调用iframe父窗口的js 函数
 echo "<script>parent.stopSend('$name')</script>";?>

 


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消