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 相关文章推荐
支持php4、php5的mysql数据库操作类
Jan 10 PHP
php+mysql 实现身份验证代码
Mar 24 PHP
PHP 事务处理数据实现代码
May 13 PHP
PHP操作数组的一些函数整理介绍
Jul 17 PHP
linux iconv方法的使用
Oct 01 PHP
php木马webshell扫描器代码
Jan 25 PHP
如何使用php判断所处服务器操作系统的类型
Jun 20 PHP
PHP获取网页标题的3种实现方法代码实例
Apr 11 PHP
PHP防盗链代码实例
Aug 27 PHP
PHP连接MYSQL数据库实例代码
Jan 20 PHP
php利用fsockopen GET/POST提交表单及上传文件
May 22 PHP
windows系统php环境安装swoole具体步骤
Mar 04 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
php4的彩蛋
2006/10/09 PHP
js和php邮箱地址验证的实现方法
2014/01/09 PHP
PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
2014/08/28 PHP
基于ThinkPHP5框架使用QueryList爬取并存入mysql数据库操作示例
2019/05/25 PHP
jquery移动listbox的值原理及代码
2013/05/03 Javascript
gridpanel动态加载数据的实例代码
2013/07/18 Javascript
js function定义函数的几种不错方法
2014/02/27 Javascript
javascript实例分享---具有立体效果的图片特效
2014/06/08 Javascript
jquery+php实现搜索框自动提示
2014/11/28 Javascript
js实现iframe框架取值的方法(兼容IE,firefox,chrome等)
2015/11/26 Javascript
属于你的jQuery提示框(Tip)插件
2016/01/20 Javascript
js操作XML文件的实现方法兼容IE与FireFox
2016/06/25 Javascript
AngularJS 避繁就简的路由
2016/07/01 Javascript
jQuery.Validate表单验证插件的使用示例详解
2017/01/04 Javascript
js实现一个简单的MVVM框架示例
2018/01/15 Javascript
vue-router3.0版本中 router.push 不能刷新页面的问题
2018/05/10 Javascript
Vue起步(无cli)的啊教程详解
2019/04/11 Javascript
gulp构建小程序的方法步骤
2019/05/31 Javascript
微信小程序分包加载代码实现方法详解
2019/09/23 Javascript
vue实现登录、注册、退出、跳转等功能
2020/12/23 Vue.js
[51:06]2018DOTA2亚洲邀请赛3月29日 小组赛A组 KG VS Liquid
2018/03/30 DOTA
[50:58]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 Mineski vs EG
2018/04/03 DOTA
[46:42]DOTA2-DPC中国联赛正赛 Aster vs Magma BO3 第二场 3月5日
2021/03/11 DOTA
python删除服务器文件代码示例
2018/02/09 Python
tensorflow实现简单的卷积神经网络
2018/05/24 Python
Python基于SMTP协议实现发送邮件功能详解
2018/08/14 Python
浅谈Scrapy网络爬虫框架的工作原理和数据采集
2019/02/07 Python
django 消息框架 message使用详解
2019/07/22 Python
Python队列RabbitMQ 使用方法实例记录
2019/08/05 Python
CSS Grid布局教程之网格单元格布局
2014/12/30 HTML / CSS
Expedia印度尼西亚站:预订酒店、廉价航班和度假套餐
2018/01/31 全球购物
蔻驰法国官网:COACH法国
2018/11/14 全球购物
四川成都导游欢迎词
2014/01/18 职场文书
建设投标担保书
2014/05/13 职场文书
Springboot如何使用logback实现多环境配置?
2021/06/16 Java/Android
python数字图像处理:图像的绘制
2022/06/28 Python