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 5.0对象模型深度探索之绑定
Sep 05 PHP
php 在线打包_支持子目录
Jun 28 PHP
PHP Document 代码注释规范
Apr 13 PHP
深入PHP操作MongoDB的技术总结
Jun 02 PHP
php的$_FILES的临时储存文件与回收机制实测过程
Jul 12 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(四)
Jun 23 PHP
php进行支付宝开发中return_url和notify_url的区别分析
Dec 22 PHP
PHP实现微信发红包程序
Aug 24 PHP
Laravel 5.3 学习笔记之 错误&amp;日志
Aug 28 PHP
thinkPHP交易详情查询功能详解
Dec 02 PHP
thinkPHP5.0框架命名空间详解
Mar 18 PHP
thinkphp5+layui实现的分页样式示例
Oct 08 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 和 HTML
2006/10/09 PHP
CURL状态码列表(详细)
2013/06/27 PHP
php实现数组筛选奇数和偶数示例
2014/04/11 PHP
详解PHP的Yii框架中组件行为的属性注入和方法注入
2016/03/18 PHP
PHP使用openssl扩展实现加解密方法示例
2020/02/20 PHP
JavaScript建立一个语法高亮输入框实现思路
2013/02/26 Javascript
jQuery学习之prop和attr的区别示例介绍
2013/11/15 Javascript
基于javascript制作微信聊天面板
2020/08/09 Javascript
jQuery的层级查找方式分析
2016/06/16 Javascript
AngularJS基础 ng-mouseenter 指令示例代码
2016/08/02 Javascript
Bootstrap基本组件学习笔记之按钮组(8)
2016/12/07 Javascript
javascript设计模式之策略模式学习笔记
2017/02/15 Javascript
如何使用Bootstrap创建表单
2017/03/29 Javascript
vue父组件点击触发子组件事件的实例讲解
2018/02/08 Javascript
基于Vuejs的搜索匹配功能实现方法
2018/03/03 Javascript
JavaScript日期工具类DateUtils定义与用法示例
2018/09/03 Javascript
详解create-react-app 2.0版本如何启用装饰器语法
2018/10/23 Javascript
vue-router实现编程式导航的代码实例
2019/01/19 Javascript
微信小程序 点击切换样式scroll-view实现代码实例
2019/10/11 Javascript
webpack是如何实现模块化加载的方法
2019/11/06 Javascript
JS实现简单日历特效
2020/01/03 Javascript
Python SQL查询并生成json文件操作示例
2018/08/17 Python
浅谈keras中的batch_dot,dot方法和TensorFlow的matmul
2020/06/18 Python
香港化妆品经销商:我的公主
2016/08/05 全球购物
银行工作检查书范文
2014/01/31 职场文书
推荐信格式范文
2014/05/09 职场文书
单位授权委托书范文
2014/08/02 职场文书
关于美容院的活动方案
2014/08/14 职场文书
知识就是力量演讲稿
2014/09/13 职场文书
2014年药房工作总结
2014/11/22 职场文书
参观邀请函范文
2015/02/02 职场文书
五星红旗迎风飘扬观后感
2015/06/17 职场文书
《爬天都峰》教学反思
2016/02/23 职场文书
导游词之宁夏贺兰山岩画
2019/11/08 职场文书
Pygame Draw绘图函数的具体使用
2021/11/17 Python
mysql查看表结构的三种方法总结
2022/07/07 MySQL