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开发框架总结收藏
Apr 24 PHP
PHP 强制性文件下载功能的函数代码(任意文件格式)
May 26 PHP
php之Memcache学习笔记
Jun 17 PHP
php实现mysql数据库操作类分享
Feb 14 PHP
PHP中Fatal error session_start()错误解决步骤
Aug 05 PHP
PHP缓存集成库phpFastCache用法
Dec 15 PHP
thinkPHP删除前弹出确认框的简单实现方法
May 16 PHP
提交表单后 PHP获取提交内容的实现方法
May 25 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
Jun 13 PHP
Laravel5.5以下版本中如何自定义日志行为详解
Aug 01 PHP
PHP实现负载均衡session共享redis缓存操作示例
Aug 22 PHP
解决在Laravel 中处理OPTIONS请求的问题
Oct 11 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
Syphon 秘笈
2021/03/03 冲泡冲煮
PHP4中实现动态代理
2006/10/09 PHP
PHP使用正则表达式清除超链接文本
2013/11/12 PHP
PHP使用php-resque库配合Redis实现MQ消息队列的教程
2016/06/29 PHP
PHP简单数据库操作类实例【支持增删改查及链式操作】
2016/10/10 PHP
PHP生成推广海报的方法分享
2018/04/22 PHP
PHP耦合设计模式实例分析
2018/08/08 PHP
div层的移动及性能优化
2010/11/16 Javascript
Javascript中的this绑定介绍
2011/09/22 Javascript
jquery滚动组件(vticker.js)实现页面动态数据的滚动效果
2013/07/03 Javascript
jCallout 轻松实现气泡提示功能
2013/09/22 Javascript
JavaScript定义类的几种方式总结
2014/01/06 Javascript
JavaScript中判断页面关闭、页面刷新的实现代码
2014/08/27 Javascript
Javascript保存网页为图片借助于html2canvas库实现
2014/09/05 Javascript
初识angular框架后的所思所想
2016/02/19 Javascript
Bootstrap table的使用方法
2016/11/02 Javascript
JavaScript实现的select点菜功能示例
2017/01/16 Javascript
微信小程序 scroll-view隐藏滚动条详解
2017/01/16 Javascript
详解react-router 4.0 下服务器如何配合BrowserRouter
2017/12/29 Javascript
element ui 表格动态列显示空白bug 修复方法
2018/09/04 Javascript
vue中,在本地缓存中读写数据的方法
2018/09/21 Javascript
深入分析JavaScript 事件循环(Event Loop)
2020/06/19 Javascript
Python中的is和id用法分析
2015/01/26 Python
Python进阶篇之字典操作总结
2016/11/16 Python
python配置grpc环境
2019/01/01 Python
Python3enumrate和range对比及示例详解
2019/07/13 Python
python队列原理及实现方法示例
2019/11/27 Python
Python+OpenCV图像处理—— 色彩空间转换
2020/10/22 Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
2021/01/28 Python
HTML5 Canvas玩转酷炫大波浪进度图效果实例(附demo)
2016/12/14 HTML / CSS
美国亚洲时尚和美容产品的一站式网上商店:Stylevana
2019/09/05 全球购物
某科技软件测试面试题
2013/05/19 面试题
校长就职演讲稿
2014/01/06 职场文书
求职个人评价范文
2014/04/09 职场文书
用Python爬取英雄联盟的皮肤详细示例
2021/12/06 Python
Python超详细分步解析随机漫步
2022/03/17 Python