PHP+iframe模拟Ajax上传文件功能示例


Posted in PHP onJuly 02, 2019

本文实例讲述了PHP+iframe模拟Ajax上传文件功能。分享给大家供大家参考,具体如下:

xmlhttprequest level 1中,Ajax是不能够上传文件的,因为js不能操作本地文件,但是市场上有一些Ajax异步上传文件的插件,是怎么完成的呢?答案:可以使用iframe模拟Ajax上传文件。接下来博主将使用iframe来模拟Ajax来上传文件。

首先看一下效果图:

PHP+iframe模拟Ajax上传文件功能示例

文件结构图:

PHP+iframe模拟Ajax上传文件功能示例

09-iframe-upload.html文件:

页面中有一个表单,表单中有一个上传文件按钮和提交按钮,点击提交按钮执行ajaxUpload函数,然后动态创建iframe标签,让其不可见,最后设置表单的target属性指向iframe。

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <title>iframe模拟Ajax上传文件</title>
  <link rel="stylesheet" href="">
</head>
<script src="http://libs.baidu.com/jquery/1.7.2/jquery.min.js"></script>
<script>
  /**
   * 文件上传
   * @return bool 是否提交表单
   * 1、捕捉表单提交的动作
   * 2、动态创建iframe标签,然其不可见
   * 3、设置表单的target属性指向iframe
   */
  function ajaxUpload(){
    var iframeName = 'upload'+Math.random();//给iframe取名
    $('<iframe name='+iframeName+' width="0" height="0" frameborder="0"></iframe>').appendTo($('body'));//动态创建iframe
    $('form:first').attr('target',iframeName);//设置form的target属性
    $('#progress').html('<img src="progress.jpg"/>');//显示上传是否成功
    //return false;
  }
</script>
<body>
  <h1>iframe模拟Ajax上传文件</h1>
  <h2 id="progress"></h2>
  <form action="09-iframe-upload.php" method="post" enctype="multipart/form-data" onsubmit="return ajaxUpload();">
    <p><input type="file" name="pic"/></p>
    <p><input type="submit" value="提交" /></p>
  </form>
</body>
</html>

09-iframe-upload.php文件:

首先延时3秒,为了能看到加载的图片,然后判断是否有上传文件,然后返回一段Js代码,这段js是在页面中显示是否上传成功

<?php
/**
 * iframe模拟Ajax上传文件
 * @author webbc
 */
sleep(3);//延时3秒
if(empty($_FILES)){
  echo 'no file';
}
$error = $_FILES['pic']['error'] == 0?'succ':'fail';//判断上传是否成功
echo "<script>parent.document.getElementById('progress').innerHTML='$error'</script>";//显示上传是否成功
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
让php处理图片变得简单 基于gb库的图片处理类附实例代码下载
May 17 PHP
php中获取指定IP的物理地址的代码(正则表达式)
Jun 23 PHP
php设计模式 Facade(外观模式)
Jun 26 PHP
PHP 中检查或过滤IP地址的实现代码
Nov 27 PHP
PHP表单数据写入MySQL数据库的代码
May 31 PHP
PHP模拟http请求的方法详解
Nov 09 PHP
PHP中的函数声明与使用详解
May 27 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
Sep 15 PHP
详解php语言最牛掰的Laravel框架
Nov 20 PHP
PHP Trait代码复用类与多继承实现方法详解
Jun 17 PHP
laravel添加前台跳转成功页面示例
Oct 22 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
Mar 09 PHP
PHP使用HTML5 FormData对象提交表单操作示例
Jul 02 #PHP
PHP实现带进度条的Ajax文件上传功能示例
Jul 02 #PHP
PHP使用HTML5 FileApi实现Ajax上传文件功能示例
Jul 01 #PHP
PHP大文件切割上传并带进度条功能示例
Jul 01 #PHP
PHP大文件切割上传功能实例分析
Jul 01 #PHP
PHP使用反向Ajax技术实现在线客服系统详解
Jul 01 #PHP
PHP封装cURL工具类与应用示例
Jul 01 #PHP
You might like
第四节 构造函数和析构函数 [4]
2006/10/09 PHP
在PHP3中实现SESSION的功能(二)
2006/10/09 PHP
PHP 存储文本换行实现方法
2010/01/05 PHP
慎用preg_replace危险的/e修饰符(一句话后门常用)
2013/06/19 PHP
PHP中4个加速、缓存扩展的区别和选用建议
2014/03/12 PHP
php json_encode()函数返回json数据实例代码
2014/10/10 PHP
PHP中使用Imagick读取pdf并生成png缩略图实例
2015/01/21 PHP
Zend Framework框架路由机制代码分析
2016/03/22 PHP
PHP的反射机制实例详解
2017/03/29 PHP
php将html转为图片的实现方法
2017/05/19 PHP
PHP 应用容器化以及部署方法
2018/02/12 PHP
自定义的一个简单时尚js下拉选择框
2013/11/20 Javascript
JavaScript事件委托实例分析
2015/05/26 Javascript
javascript 中的 delete及delete运算符
2015/11/15 Javascript
JavaScript html5 canvas绘制时钟效果(二)
2016/03/27 Javascript
AngularJS实现表单验证功能详解
2017/10/12 Javascript
利用10行js代码实现上下滚动公告效果
2017/12/08 Javascript
vue中通过使用$attrs实现组件之间的数据传递功能
2019/09/01 Javascript
Vue2.X和Vue3.0数据响应原理变化的区别
2019/11/07 Javascript
微信小程序input抖动问题的修复方法
2021/03/03 Javascript
[43:35]EG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
django中的setting最佳配置小结
2017/11/21 Python
python使用多线程编写tcp客户端程序
2019/09/02 Python
python之array赋值技巧分享
2019/11/28 Python
浅析css3中matrix函数的使用
2016/06/06 HTML / CSS
匈牙利最大的健身制造商和销售商:inSPORTline
2018/10/30 全球购物
Java的类与C++的类有什么不同
2014/01/18 面试题
平民服装店创业计划书
2014/01/17 职场文书
端午节粽子促销活动方案
2014/02/02 职场文书
毕业生写求职信的要点
2014/03/04 职场文书
绩效工资实施方案
2014/03/15 职场文书
个人党性分析材料
2014/12/19 职场文书
社会实践活动报告
2015/02/05 职场文书
聋哑人盗窃罪辩护词
2015/05/21 职场文书
2016大学生暑期三下乡心得体会
2016/01/23 职场文书
家长必看:义务教育,不得以面试 评测等名义选拔学生
2019/07/09 职场文书