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 setTime 设置当前时间的代码
Aug 27 PHP
在windows服务器开启php的gd库phpinfo中未发现
Jan 13 PHP
处理单名多值表单的详解
Jun 08 PHP
php生成xml时添加CDATA标签的方法
Oct 17 PHP
php基于base64解码图片与加密图片还原实例
Nov 03 PHP
给ECShop添加最新评论
Jan 07 PHP
php+mysqli预处理技术实现添加、修改及删除多条数据的方法
Jan 30 PHP
php实现Mysql简易操作类
Oct 11 PHP
使用phpexcel类实现excel导入mysql数据库功能(实例代码)
May 12 PHP
ThinkPHP实现的rsa非对称加密类示例
May 29 PHP
PHP安装memcache扩展的步骤讲解
Feb 14 PHP
PHP开发API接口签名生成及验证操作示例
May 27 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
PHP编程中字符串处理的5个技巧小结
2007/11/13 PHP
php 无法加载mysql的module的时候的配置的解决方案引发的思考
2012/01/27 PHP
php传值赋值和传地址赋值用法实例分析
2015/06/20 PHP
微信 getAccessToken方法详解及实例
2016/11/23 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
javascript中的对象和数组的应用技巧
2007/01/07 Javascript
JavaScript入门教程(3) js面向对象
2009/01/31 Javascript
firefox firebug中文入门教程 脚本之家新年特别版
2010/01/02 Javascript
来自国外的14个图片放大编辑的jQuery插件整理
2010/10/20 Javascript
Javascript中定义方法的另类写法(批量定义js对象的方法)
2011/02/25 Javascript
jQuery+ajax中getJSON() 用法实例
2014/12/22 Javascript
jQuery中noconflict函数的实现原理分解
2015/02/03 Javascript
JavaScript实现的经典文件树菜单效果
2015/09/08 Javascript
详谈JavaScript的闭包及应用
2017/01/17 Javascript
JavaScript中Promise的使用详解
2017/02/26 Javascript
Bootstrap超大屏幕的实现代码
2017/03/22 Javascript
Django使用多数据库的方法
2017/09/06 Javascript
Net微信网页开发 使用微信JS-SDK获取当前地理位置过程详解
2019/08/26 Javascript
react实现移动端下拉菜单的示例代码
2020/01/16 Javascript
详解vue beforeEach 死循环问题解决方法
2020/02/25 Javascript
原生js实现碰撞检测
2020/03/12 Javascript
Javascript实现单选框效果
2020/12/09 Javascript
Pycharm设置界面全黑的方法
2018/05/23 Python
PyQt打开保存对话框的方法和使用详解
2019/02/27 Python
Django中提供的6种缓存方式详解
2019/08/05 Python
python爬虫判断招聘信息是否存在的实例代码
2020/11/20 Python
Python实现微信表情包炸群功能
2021/01/28 Python
驴妈妈旅游网:中国新型的B2C旅游电子商务网站
2016/08/16 全球购物
美国护肤咨询及美容产品电商:Askderm
2017/02/24 全球购物
几个数据库方面的面试题
2016/07/01 面试题
不打扫卫生检讨书
2014/02/12 职场文书
双拥工作宣传标语
2014/06/26 职场文书
店铺转让协议书(2014版)
2014/09/23 职场文书
2014年乡镇团委工作总结
2014/12/18 职场文书
python的netCDF4批量处理NC格式文件的操作方法
2022/03/21 Python
使用Python拟合函数曲线
2022/04/14 Python