PHP使用HTML5 FileApi实现Ajax上传文件功能示例

这篇文章主要介绍了PHP使用HTML5 FileApi实现Ajax上传文件功能,结合实例形式分析了HTML5 FileApi的功能、原理及php使用HTML5 FileApi实现ajax上传的相关操作技巧,需要的朋友可以参考下。

本文实例讲述了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上传文件、预览上传文件效果。

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <title>fileApi实现Ajax上传文件</title>
  7. <link rel="stylesheet" href="">
  8. <script>
  9. function selfile(){
  10. var file = document.getElementsByTagName('input')[0].files[0];//js读取上传文件
  11. var con = '';
  12. con += '文件名:' + file.name + '<br/>';
  13. con += '大小:' + file.size;
  14. document.getElementById('debug').innerHTML = con;//把文件名和大小显示在页面中
  15. var fd = new FormData();//创建FormData对象
  16. fd.append('pic',file);//添加文件数据
  17. //ajax上传文件
  18. var xhr = new XMLHttpRequest();
  19. xhr.open('POST','11-fileApi.php',true);
  20. xhr.send(fd);
  21. var img = document.createElement('img');//动态创建img标签
  22. img.src = window.URL.createObjectURL(file);//把二进制对象直接读出浏览器显示的资源
  23. document.getElementsByTagName('body')[0].appendChild(img);//把img标签动态添加到dom树中
  24. }
  25. </script>
  26. </head>
  27. <body>
  28. <input type="file" name="pic" onchange="selfile();" />
  29. <div ></div>
  30. </body>
  31. </html>

11-fileApi.php文件:

首先判断是否有文件上传,然后判断上传是否成功,最后把文件复制到当前目录下的upload目录下,文件名保持不变。

  1. <?php
  2. /**
  3. * fileApi实现Ajax上传文件
  4. * @author webbc
  5. */
  6. if(emptyempty($_FILES)){
  7. exit('no file');
  8. }
  9. if($_FILES['pic']['error'] !== 0){
  10. exit('fail');
  11. }
  12. move_uploaded_file($_FILES['pic']['tmp_name'],'./upload/'.$_FILES['pic']['name']);
  13. ?>