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写入数据库类代码分享
Jul 26 PHP
Laravel 5 学习笔记
Mar 06 PHP
php删除数组中重复元素的方法
Dec 22 PHP
PHP缓冲区用法总结
Feb 14 PHP
php基于mcrypt_encrypt和mcrypt_decrypt实现字符串加密解密的方法
Jul 12 PHP
PHP解耦的三重境界(浅谈服务容器)
Mar 13 PHP
详解PHP防止盗链防止迅雷下载的方法
Apr 26 PHP
PHP清除缓存的几种方法总结
Sep 12 PHP
PHP PDOStatement::closeCursor讲解
Jan 30 PHP
PHP实现的文件浏览器功能简单示例
Sep 12 PHP
Laravel 微信小程序后端实现用户登录的示例代码
Nov 26 PHP
浅谈如何提高PHP代码的质量
May 28 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 静态属性和静态方法区别详解
2017/04/09 PHP
TP3.2.3框架文件上传操作实例详解
2020/01/23 PHP
用一段js程序来实现动画功能
2007/03/06 Javascript
JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件
2012/08/14 Javascript
基于jquery扩展漂亮的下拉框可以二次修改
2013/11/19 Javascript
js比较日期大小的方法
2015/05/12 Javascript
JavaScript必看小技巧(必看)
2016/06/07 Javascript
详解用node编写自己的cli工具
2017/05/23 Javascript
js使用原型对象(prototype)需要注意的地方
2017/08/28 Javascript
详解如何在微信小程序开发中正确的使用vant ui组件
2018/09/13 Javascript
微信小程序实现录音时的麦克风动画效果实例
2019/05/18 Javascript
原生js实现3D轮播图
2020/03/21 Javascript
微信小程序地图绘制线段并且测量(实例代码)
2020/01/02 Javascript
js实现小星星游戏
2020/03/23 Javascript
[01:01]青春无憾,一战成名——DOTA2全国高校联赛开启
2018/02/25 DOTA
Python 文件和输入输出小结
2013/10/09 Python
最基础的Python的socket编程入门教程
2015/04/23 Python
python实现web方式logview的方法
2015/08/10 Python
Python正确重载运算符的方法示例详解
2017/08/27 Python
在Pycharm terminal中字体大小设置的方法
2019/01/16 Python
Python将视频或者动态图gif逐帧保存为图片的方法
2019/09/10 Python
Python socket聊天脚本代码实例
2020/01/02 Python
Jupyter Notebook的连接密码 token查询方式
2020/04/21 Python
python模拟斗地主发牌
2020/04/22 Python
python re的findall和finditer的区别详解
2020/11/15 Python
HTML5实现Notification API桌面通知功能
2016/03/02 HTML / CSS
HTML5 canvas基本绘图之绘制曲线
2016/06/27 HTML / CSS
Veronica Beard官网:在酷、经典和别致之间找到了平衡
2018/01/11 全球购物
Kangol帽子官网:坎戈尔袋鼠
2018/09/26 全球购物
巴塞罗那观光通票:Barcelona Pass
2019/10/30 全球购物
德国户外商店:eXXpozed
2020/07/25 全球购物
.NET面试题:什么是反射
2016/09/30 面试题
财务管理专业毕业生求职信
2014/06/02 职场文书
领导干部学习“三严三实”思想汇报
2014/09/15 职场文书
Java使用JMeter进行高并发测试
2021/11/23 Java/Android
我家女友可不止可爱呢 公开OP主题曲无字幕动画MV
2022/04/11 日漫