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 tp验证表单与自动填充函数代码
Feb 22 PHP
PHP中使用Imagick操作PSD文件实例
Jan 26 PHP
PHP网站建设的流程与步骤分享
Sep 25 PHP
WordPress中用于获取及自定义头像图片的PHP脚本详解
Dec 17 PHP
php 微信公众平台开发模式实现多客服的实例代码
Nov 07 PHP
php mysql操作mysql_connect连接数据库实例详解
Dec 26 PHP
php中preg_replace正则替换用法分析【一次替换多个值】
Jan 17 PHP
利用PHP判断是否是连乘数字串的方法示例
Jul 03 PHP
基于PHP-FPM进程池探秘
Oct 17 PHP
php curl优化下载微信头像的方法总结
Sep 07 PHP
php实现数字补零的方法总结
Sep 12 PHP
php TP5框架生成二维码链接
Apr 01 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修改时间格式的代码
2011/05/29 PHP
php smarty 二级分类代码和模版循环例子
2011/06/16 PHP
关于尾递归的使用详解
2013/05/02 PHP
PHP 通过Socket收发十六进制数据的实现代码
2013/08/16 PHP
windows平台中配置nginx+php环境
2015/12/06 PHP
PHP中spl_autoload_register()函数用法实例详解
2016/07/18 PHP
关于JavaScript的一些看法
2009/05/27 Javascript
使用UglifyJS合并/压缩JavaScript的方法
2012/03/07 Javascript
css样式标签和js语法属性区别
2013/11/06 Javascript
js使用ajax读博客rss示例
2014/05/06 Javascript
JavaScript常用标签和方法总结
2015/09/01 Javascript
JavaScript设计模式经典之命令模式
2016/02/24 Javascript
js基本算法:冒泡排序,二分查找的简单实例
2016/10/08 Javascript
超全面的vue.js使用总结
2017/02/12 Javascript
关于jQuery.ajax()的jsonp碰上post详解
2017/07/02 jQuery
详解react-router4 异步加载路由两种方法
2017/09/12 Javascript
react-native中ListView组件点击跳转的方法示例
2017/09/30 Javascript
vue watch普通监听和深度监听实例详解(数组和对象)
2018/08/16 Javascript
vue服务端渲染页面缓存和组件缓存的实例详解
2018/09/18 Javascript
使用flow来规范javascript的变量类型
2019/09/12 Javascript
jQuery实现移动端下拉展现新的内容回弹动画
2020/06/24 jQuery
Python的Flask框架中集成CKeditor富文本编辑器的教程
2016/06/13 Python
用python处理MS Word的实例讲解
2018/05/08 Python
django 发送邮件和缓存的实现代码
2018/07/18 Python
pycharm中成功运行图片的配置教程
2018/10/28 Python
python实现websocket的客户端压力测试
2019/06/25 Python
Python PIL读取的图像发生自动旋转的实现方法
2019/07/05 Python
使用Python三角函数公式计算三角形的夹角案例
2020/04/15 Python
世界上最受欢迎的花店:1-800-Flowers.com
2020/06/01 全球购物
上海期货面试题
2014/01/31 面试题
Prototype如何实现页面局部定时刷新
2013/08/06 面试题
审计主管岗位职责
2014/01/31 职场文书
中专生毕业个人鉴定
2014/02/26 职场文书
企业新年寄语
2014/04/04 职场文书
拉贝日记观后感
2015/06/05 职场文书
Python Django获取URL中的数据详解
2021/11/01 Python