当前位置:首页 > PHP教程 > php上传下载 > 列表

php+ajax实现文件切割上传功能示例

发布:smiling 来源: PHP粉丝网  添加日期:2022-02-17 11:47:03 浏览: 评论:0 

这篇文章主要介绍了php+ajax实现文件切割上传功能,结合实例形式分析了PHP结合HTML5 File对象的slice函数进行文件切割与ajax无刷新上传相关操作技巧,需要的朋友可以参考下。

本文实例讲述了php+ajax实现文件切割上传功能,分享给大家供大家参考,具体如下:

html5中的File对象继承Blob二进制对象,Blob提供了一个slice函数,可以用来切割文件数据。

  1. <!DOCTYPE HTML> 
  2. <html lang="zh-CN"
  3. <head> 
  4.   <meta charset="UTF-8"
  5.   <title></title> 
  6. </head> 
  7. <body> 
  8.   <form method="post" id="myForm"
  9.     <input type="file" name="file" id="upfile" /> 
  10.     <input type="submit" name="submit" value="提交" /> 
  11.   </form> 
  12.   <div id="upStatus"></div> 
  13. </body> 
  14. <script type="text/javascript"
  15.   var myForm = document.getElementById("myForm"); 
  16.   var upfile = document.getElementById("upfile"); 
  17.  
  18.   myForm.onsubmit = function() { 
  19.     //获取文件对象 
  20.     var file = upfile.files[0]; 
  21.     //获取文件大小 
  22.     var fileSize = file.size; 
  23.     //一次截取的大小(字节) 
  24.     var CutSize = 1024 * 1024 * 10; 
  25.     //开始截取位置 
  26.     var CutStart = 0; 
  27.     //结束截取位置 
  28.     var CutEnd = CutStart + CutSize; 
  29.     //截取的临时文件 
  30.     var tmpfile = new Blob(); 
  31.  
  32.     while(CutStart < fileSize) { 
  33.       tmpfile = file.slice(CutStart, CutEnd); 
  34.  
  35.       //我们创建一个FormData对象 
  36.       var fd = new FormData(); 
  37.       //把文件添加到FormData对象中 
  38.       fd.append("file", tmpfile); 
  39.  
  40.       var xhr = new XMLHttpRequest(); 
  41.       //这里使用同步 
  42.       xhr.open("post""upfile.php", false); 
  43.  
  44.       //上传进度 
  45.       console.log(Math.round( (CutStart + tmpfile.size) / fileSize * 100) + "%"); 
  46.  
  47.       //发送FormData对象 
  48.       xhr.send(fd); 
  49.       //重新设置截取文件位置 
  50.       CutStart = CutEnd; 
  51.       CutEnd = CutStart + CutSize; 
  52.     } 
  53.     return false; 
  54.   }; 
  55. </script> 
  56. </html> 

upfile.php代码如下:

  1. <?php 
  2. $uploadDir = './upload/'
  3. if(!file_exists($uploadDir)) { 
  4.   @mkdir($uploadDir, 0777, true); 
  5. $uploadFile = $uploadDir . basename($_FILES['file']['name']); 
  6.  
  7. if(!file_exists($uploadFile)) { 
  8.   //如果文件不存在 
  9.   move_uploaded_file($_FILES['file']['tmp_name'], $uploadFile); 
  10. else { 
  11.   //如果文件已存在,追加数据 
  12.   file_put_contents($uploadFilefile_get_contents($_FILES['file']['tmp_name']), FILE_APPEND); 
  13. }

Tags: php+ajax php文件切割上传

分享到: