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 Ajax实现页面无刷新发表评论
Jan 02 PHP
PHP读取目录下所有文件的代码
Jan 07 PHP
CakePHP去除默认显示的标题及图标的方法
Oct 22 PHP
php 数组的创建、调用和更新实现代码
Mar 09 PHP
php 上传功能实例代码
Apr 13 PHP
深入理解php的MySQL连接类
Jun 07 PHP
对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析
Jul 04 PHP
Yii框架登录流程分析
Dec 03 PHP
Yii学习总结之安装配置
Feb 22 PHP
Yii操作数据库实现动态获取表名的方法
Mar 29 PHP
Yii中的cookie的发送和读取
Jul 27 PHP
Laravel 验证码认证学习记录小结
Dec 20 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写的MySQL数据库用户认证系统代码
2007/03/22 PHP
PHP中使用php://input处理相同name值的表单数据
2015/02/03 PHP
Yii框架实现多数据库配置和操作的方法
2017/05/25 PHP
PHP/ThinkPHP实现批量打包下载文件的方法示例
2017/07/31 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
IE中radio 或checkbox的checked属性初始状态下不能选中显示问题
2009/07/25 Javascript
javaScript parseInt字符转化为数字函数使用小结
2009/11/05 Javascript
jquery实现奇偶行赋值不同css值
2012/02/17 Javascript
jquery实现的一个导航滚动效果具体代码
2013/05/27 Javascript
用jquery模仿的a的title属性的例子
2014/10/22 Javascript
NodeJS学习笔记之FS文件模块
2015/01/13 NodeJs
javascript获取本机操作系统类型的方法
2015/08/13 Javascript
基于javascript实现图片左右切换效果
2016/01/25 Javascript
HTML中setCapture、releaseCapture 使用方法浅析
2016/09/25 Javascript
Vue单文件组件的如何使用方式介绍
2017/07/28 Javascript
微信小程序template模板实例详解
2017/10/27 Javascript
js中Function引用类型常见有用的方法和属性详解
2019/12/11 Javascript
jquery实现两个div中的元素相互拖动的方法分析
2020/04/05 jQuery
vue 图片裁剪上传组件的实现
2020/11/12 Javascript
[03:17]DOTA2英雄基础教程 剧毒术士
2013/12/12 DOTA
Python中用Ctrl+C终止多线程程序的问题解决
2013/03/30 Python
Python中使用hashlib模块处理算法的教程
2015/04/28 Python
Python数据结构之单链表详解
2017/09/12 Python
浅谈python中列表、字符串、字典的常用操作
2017/09/19 Python
Python线性方程组求解运算示例
2018/01/17 Python
python 批量解压压缩文件的实例代码
2019/06/27 Python
Python读取VOC中的xml目标框实例
2020/03/10 Python
Python猴子补丁Monkey Patch用法实例解析
2020/03/23 Python
HTML5新增属性data-*和js/jquery之间的交互及注意事项
2017/08/08 HTML / CSS
英国网上自行车商店:Tredz Bikes
2019/10/29 全球购物
工地宣传标语
2014/06/18 职场文书
效能风暴心得体会
2014/09/04 职场文书
餐厅如何利用“营销策略”扭转亏本局面
2019/10/15 职场文书
Python中Cookies导出某站用户数据的方法
2021/05/17 Python
React + Threejs + Swiper 实现全景图效果的完整代码
2021/06/28 Javascript
Windows Server 2012配置DNS服务器的方法
2022/04/29 Servers