侯体宗的博客
  • 首页
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

php表单文件iframe异步上传实例讲解

php  /  管理员 发布于 7年前   189

本文实例为大家分享了php表单文件iframe异步上传的具体代码,供大家参考,具体内容如下

1.表单中放置iframe元素;
2.文件上传控件内容变化的时候触发JS设置表单的action为处理文件上传的img_upload_process.php文件,并且将表单的target设置为iframe,让iframe去提交到服务器进行文件上传;
3.img_upload_process.php中处理文件上传成功后,将上传成功保存的文件路径回传给表单中隐藏域;
4.点击表单提交按钮的时,JS设置表单action为接收表单数据的form_process.php文件,表单的target设置为_self。

表单:asyn_uplaod.html

图片异步上传
用户名:
上传头像:

处理文件上传:img_upload_process.php

up($file)){//上传成功 echo <<   window.parent.document.getElementById('uploaded_img').src = "$save_path";  window.parent.document.getElementById('loading').innerHTML = '上传成功';   window.parent.document.getElementById('save_path').value = "$save_path";  STR;}else{ $error = $upload->error(); echo <<  window.parent.document.getElementById('uploaded_img').src = "";  window.parent.document.getElementById('loading').innerHTML = "上传失败: $error"; STR;}

文件上传工具类:Upload.class.php

path = $path;  $this->max_size = 1000000; } /**  * 文件上传的方法,分目录存放文件  * @access public  * @param $file array 包含上传文件信息的数组  * @return mixed 成功返回上传的文件名,失败返回false  */ public function up($file){  //判断文件是否是通过 HTTP POST 上传,防止恶意欺骗  /*  if (! is_uploaded_file($file['tmp_name'])) {   $this->errno = 5; //设置错误信息号为5,表示非法上传   return false;  }  */  //判断是否从浏览器端成功上传到服务器端  if ($file['error'] == 0) {   # 上传到临时文件夹成功,对临时文件进行处理   //上传类型判断   if (!in_array($file['type'], $this->mime)) {    # 类型不对    $this->errno = -1;     return false;   }   //判断文件大小   if ($file['size'] > $this->max_size) {    # 大小超出配置文件的中的上传限制    $this->errno = -2;    return false;   }   //获取存放上传文件的目录   $sub_path = date('Ymd').'/';   if (!is_dir($this->path . $sub_path)) {    # 不存在该目录,创建之    mkdir($this->path . $sub_path);   }   //文件重命名,由当前日期 + 随机数 + 后缀名   $file_name = date('YmdHis').uniqid().strrchr($file['name'], '.');   //准备就绪了,开始上传   if (move_uploaded_file($file['tmp_name'], $this->path . $sub_path . $file_name)) {    # 移动成功    return $sub_path . $file_name;   } else {    # 移动失败    $this->errno = -3;    return false;   }  } else {   # 上传到临时文件夹失败,根据其错误号设置错误号   $this->errno = $file['error'];   return false;  } } /**  * 多文件上传方法  * @access public  * @param $file array 包含上传文件信息的数组,是一个二维数组  * @return array 成功返回上传的文件名构成的数组, ?如果有失败的则不太好处理了  */ public function multiUp($files){  //在多文件上传时,上传文件信息 又是一个多维数组,如$_FILES['userfile']['name'][0],$_FILES['userfile']['name'][1]  //我们只需要遍历该数组,得到每个上传文件的信息,依次调用up方法即可  foreach ($files['name'] as $key => $value) {   # code...   $file['name'] = $files['name'][$key];   $file['type'] = $files['type'][$key];   $file['tmp_name'] = $files['tmp_name'][$key];   $file['error'] = $files['error'][$key];   $file['size'] = $files['size'][$key];   //调用up方法,完成上传   $filename[] = $this->up($file);  }  return $filename; } /**  * 获取错误信息,根据错误号获取相应的错误提示  * @access public  * @return string 返回错误信息  */ public function error(){  switch ($this->errno) {   case -1:    return '请检查你的文件类型,目前支持的类型有'.implode(',', $this->mime);    break;   case -2:    return '文件超出系统规定的大小,最大不能超过'. $this->max_size;    break;   case -3:    return '文件移动失败';    break;   case 1:    return '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值,其大小为'.ini_get('upload_max_filesize');    break;   case 2:    return '上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值,其大小为' . $_POST['MAX_FILE_SIZE'];    break;   case 3:    return '文件只有部分被上传';    break;   case 4:    return '没有文件被上传';    break;   case 5:    return '非法上传';    break;   case 6:    return '找不到临时文件夹';    break;   case 7:    return '文件写入临时文件夹失败';    break;   default:    return '未知错误,灵异事件';    break;  } }}

处理表单提交:form_process.php

点击表单提交按钮结果:

代码下载:php表单文件iframe异步上传

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

您可能感兴趣的文章:

  • php利用fsockopen GET/POST提交表单及上传文件
  • thinkphp表单上传文件并将文件路径保存到数据库中
  • php上传图片获取路径及给表单字段赋值的方法
  • php+html5使用FormData对象提交表单及上传图片的方法
  • PHP中上传多个文件的表单设计例子
  • 美图秀秀web开放平台--PHP流式上传和表单上传示例分享
  • php中关于普通表单多文件上传的处理方法
  • php文件上传表单摘自drupal的代码
  • php实现表单提交上传文件功能


  • 上一条:
    PHP策略模式定义与用法示例
    下一条:
    php实现的统计字数函数定义与使用示例
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 用Time Warden监控PHP中的代码处理时间(0个评论)
    • 在PHP中使用array_pop + yield实现读取超大型目录功能示例(0个评论)
    • Property Hooks RFC在PHP 8.4中越来越接近现实(0个评论)
    • 近期文章
    • 在windows10中升级go版本至1.24后LiteIDE的Ctrl+左击无法跳转问题解决方案(0个评论)
    • 智能合约Solidity学习CryptoZombie第四课:僵尸作战系统(0个评论)
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(95个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-06
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-11
    • 2017-12
    • 2018-01
    • 2018-02
    • 2018-03
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-09
    • 2021-02
    • 2021-03
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    • 2024-05
    • 2024-06
    • 2024-07
    • 2024-09
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客