PHP使用HTML5 FileApi实现Ajax上传文件功能示例


Posted in PHP onJuly 01, 2019

本文实例讲述了PHP使用HTML5 FileApi实现Ajax上传文件功能。分享给大家供大家参考,具体如下:

FileApi是HTML5的一个新特性,有了这个新特性,js就可以读取本地的文件了,然后实现真正的Ajax上传文件了,而不是iframe方法,下面会介绍api的使用,以及实现Ajax上传文件:

FileApi使用

定义上传控件:

<input type="file" name="pic" onchange="selfile();" />

当上传文件后,就会触发selfile()函数,selfile()代码:

var files = document.getElementsByTagName('input')[0].files;//fileList对象,文件列表对象,表示有多个文件被上传,如果只有1个文件上传也是fileList对象
var files = document.getElementsByTagName('input')[0].files[0];//file对象,表示单个上传文件

Ajax上传文件

效果图:

PHP使用HTML5 FileApi实现Ajax上传文件功能示例

项目结构图:

PHP使用HTML5 FileApi实现Ajax上传文件功能示例

11-fileApi.html文件:

页面中主要有一个上传文件按钮,如果有文件上传,onchange事件被响应,selfile函数调用,然后js读取上传文件、把文件名和大小显示在页面中、创建FormData对象并添加数据、ajax上传文件、预览上传文件效果。

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <title>fileApi实现Ajax上传文件</title>
  <link rel="stylesheet" href="">
<script>
  function selfile(){
    var file = document.getElementsByTagName('input')[0].files[0];//js读取上传文件
    var con = '';
    con += '文件名:' + file.name + '<br/>';
    con += '大小:' + file.size;
    document.getElementById('debug').innerHTML = con;//把文件名和大小显示在页面中
    var fd = new FormData();//创建FormData对象
    fd.append('pic',file);//添加文件数据
    //ajax上传文件
    var xhr = new XMLHttpRequest();
    xhr.open('POST','11-fileApi.php',true);
    xhr.send(fd);
    var img = document.createElement('img');//动态创建img标签
    img.src = window.URL.createObjectURL(file);//把二进制对象直接读出浏览器显示的资源
    document.getElementsByTagName('body')[0].appendChild(img);//把img标签动态添加到dom树中
  }
</script>
</head>
<body>
  <input type="file" name="pic" onchange="selfile();" />
  <div id="debug"></div>
</body>
</html>

11-fileApi.php文件:

首先判断是否有文件上传,然后判断上传是否成功,最后把文件复制到当前目录下的upload目录下,文件名保持不变。

<?php
/**
 * fileApi实现Ajax上传文件
 * @author webbc
 */
if(empty($_FILES)){
  exit('no file');
}
if($_FILES['pic']['error'] !== 0){
  exit('fail');
}
move_uploaded_file($_FILES['pic']['tmp_name'],'./upload/'.$_FILES['pic']['name']);
?>

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

PHP 相关文章推荐
PHP 和 MySQL 开发的 8 个技巧
Oct 09 PHP
用PHP读取RSS feed的代码
Aug 01 PHP
thinkphp浏览历史功能实现方法
Oct 29 PHP
yiic命令时提示“php.exe”不是内部或外部命令的解决方法
Dec 18 PHP
PHP中通过trigger_error触发PHP错误示例
Jun 23 PHP
win7系统配置php+Apache+mysql环境的方法
Aug 21 PHP
PHP实现基于面向对象的mysqli扩展库增删改查操作工具类
Jul 18 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
Aug 30 PHP
yii框架redis结合php实现秒杀效果(实例代码)
Oct 26 PHP
浅析PHP类的反射来实现依赖注入过程
Feb 06 PHP
浅析PHP数据导出知识点
Feb 17 PHP
PHP设计模式(六)桥连模式Bridge实例详解【结构型】
May 02 PHP
PHP大文件切割上传并带进度条功能示例
Jul 01 #PHP
PHP大文件切割上传功能实例分析
Jul 01 #PHP
PHP使用反向Ajax技术实现在线客服系统详解
Jul 01 #PHP
PHP封装cURL工具类与应用示例
Jul 01 #PHP
PHP session垃圾回收机制实例分析
Jun 28 #PHP
PHP常用的类封装小结【4个工具类】
Jun 28 #PHP
php实现网页上一页下一页翻页过程详解
Jun 28 #PHP
You might like
PhpMyAdmin出现export.php Missing parameter: what /export_type错误解决方法
2012/08/09 PHP
基于php实现长连接的方法与注意事项的问题
2013/05/10 PHP
PHP中基本HTTP认证技巧分析
2015/03/16 PHP
深入理解PHP内核(一)
2015/11/10 PHP
PHP和MySql中32位和64位的整形范围是多少
2016/02/18 PHP
joomla实现注册用户添加新字段的方法
2016/05/05 PHP
风吟的小型JavaScirpt库 (FY.JS).
2010/03/09 Javascript
JS+CSS实现可以凹陷显示选中单元格的方法
2015/03/02 Javascript
JavaScript实现自动消除按钮功能的方法
2015/08/05 Javascript
JS+CSS实现仿支付宝菜单选中效果代码
2015/09/25 Javascript
vue.js移动端app实战1:初始配置详解
2017/07/24 Javascript
angular.js实现购物车功能
2017/10/23 Javascript
vue element项目引入icon图标的方法
2018/06/06 Javascript
js自定义input文件上传样式
2018/10/26 Javascript
node省市区三级数据性能测评实例分析
2019/11/06 Javascript
nuxt.js服务端渲染中axios和proxy代理的配置操作
2020/11/06 Javascript
[01:33]一分钟玩转DOTA2第三弹:DOTA2&DotA快捷操作大对比
2014/06/04 DOTA
[51:44]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第二场
2018/04/04 DOTA
Python进行数据科学工作的简单入门教程
2015/04/01 Python
深入解析Python编程中super关键字的用法
2016/06/24 Python
Python实现简易端口扫描器代码实例
2017/03/15 Python
python pygame实现五子棋小游戏
2020/10/26 Python
Python实现多线程/多进程的TCP服务器
2019/09/03 Python
Python Django框架防御CSRF攻击的方法分析
2019/10/18 Python
Anaconda的安装及其环境变量的配置详解
2020/04/22 Python
Docker如何部署Python项目的实现详解
2020/10/26 Python
Django model class Meta原理解析
2020/11/14 Python
python 实现逻辑回归
2020/12/30 Python
美国演唱会和体育门票购买网站:Ticketnetwork
2018/10/19 全球购物
优秀求职信范文分享
2013/12/19 职场文书
和解协议书
2014/04/16 职场文书
房地产活动策划方案
2014/05/14 职场文书
学校花圃的标语
2014/06/18 职场文书
学生自我鉴定格式及范文
2014/09/16 职场文书
超市店长竞聘书
2015/09/15 职场文书
Javascript的promise,async和await的区别详解
2022/03/24 Javascript