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 相关文章推荐
ftp类(myftp.php)
Oct 09 PHP
php 清除网页病毒的方法
Dec 05 PHP
php 魔术方法使用说明
Oct 20 PHP
深入分析使用mysql_fetch_object()以对象的形式返回查询结果
Jun 05 PHP
关于php支持分块与断点续传文件下载功能代码
May 09 PHP
Linux+Nginx+MySQL下配置论坛程序Discuz的基本教程
Dec 23 PHP
php上传图片生成缩略图(GD库)
Jan 06 PHP
详解WordPress中的头像缓存和代理中的缓存更新方法
Mar 01 PHP
yii的入口文件index.php中为什么会有这两句
Aug 04 PHP
php使用curl实现ftp文件下载功能
May 16 PHP
使用一个for循环将N*N的二维数组的所有值置1实现方法
May 29 PHP
php计数排序算法的实现代码(附四个实例代码)
Mar 31 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
PHP 抓取新浪读书频道的小说并生成txt电子书的代码
2009/12/18 PHP
fleaphp rolesNameField bug解决方法
2011/04/23 PHP
php检测图片木马多进制编程实践
2013/04/11 PHP
使用PHP Socket 编程模拟Http post和get请求
2014/11/25 PHP
Cookie 注入是怎样产生的
2009/04/08 Javascript
JavaScript 对象的属性和方法4种不同的类型
2010/03/19 Javascript
Ext JS 4官方文档之三 -- 类体系概述与实践
2012/12/16 Javascript
探讨JavaScript标签位置的存放与功能有无关系
2016/01/15 Javascript
JavaScript html5 canvas绘制时钟效果(二)
2016/03/27 Javascript
全面解析多种Bootstrap图片轮播效果
2016/05/27 Javascript
JavaScript递归操作实例浅析
2016/10/31 Javascript
js实现5秒倒计时重新发送短信功能
2017/02/05 Javascript
原生JS实现九宫格抽奖效果
2017/04/01 Javascript
详解bootstrap导航栏.nav与.navbar区别
2017/11/23 Javascript
详解webpack3编译兼容IE8的正确姿势
2017/12/21 Javascript
js统计页面上每个标签的数量实例代码
2018/05/29 Javascript
react native 获取地理位置的方法示例
2018/08/28 Javascript
详解从react转职到vue开发的项目准备
2019/01/14 Javascript
微信小程序的mpvue框架快速上手指南
2019/05/15 Javascript
vue 计算属性和侦听器的使用小结
2021/01/25 Vue.js
[01:15:16]DOTA2-DPC中国联赛 正赛 Elephant vs Aster BO3 第一场 1月26日
2021/03/11 DOTA
bat和python批量重命名文件的实现代码
2016/05/19 Python
python 查找字符串是否存在实例详解
2017/01/20 Python
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
2018/01/04 Python
python简单实现操作Mysql数据库
2018/01/29 Python
Python Tkinter模块实现时钟功能应用示例
2018/07/23 Python
Python实现的json文件读取及中文乱码显示问题解决方法
2018/08/06 Python
详解安装mitmproxy以及遇到的坑和简单用法
2019/01/21 Python
Python可变和不可变、类的私有属性实例分析
2019/05/31 Python
Python Pillow.Image 图像保存和参数选择方式
2020/01/09 Python
python爬虫破解字体加密案例详解
2021/03/02 Python
应届生财务管理求职信
2013/11/06 职场文书
缴纳养老保险的证明
2014/01/10 职场文书
关于青春的演讲稿500字
2014/08/22 职场文书
违纪开除通知书
2015/04/25 职场文书
62句有关感恩节文案(推荐收藏)
2019/11/28 职场文书