Ajax 原生ajax-xhr对象文件上传进度条案例

深碍√TFBOYSˉ_ 2021-07-24 23:12 732阅读 0赞
  1. <input type='file' > 浏览文件夹

document.querySelector(‘input’).files; 获得文件对象中的文件集合对象
xhr.onload.progress=function(){}; 上传还在进度时的回调函数
event.lengthComputable; 进度度量衡,100%时返回false,否则返回true;
event.loaded; 已上传文件大小
event.total; 文件总大小
(event.loaded/event.total)*100; 文件上传进度,赋值给进度条的value实现动态改变

前台:

  1. <html>
  2. <head>
  3. <meta charset="utf-8">
  4. <title></title>
  5. <script src="jquery-3.4.1.js"></script>
  6. </head>
  7. <body>
  8. <progress min="0" max="100" value="0"></progress>
  9. <input type="file" class='tempFile' multiple >
  10. <button onclick='ajax()'>上传文件</button>
  11. <script>
  12. function ajax()
  13. {
  14. var files=document.querySelector('.tempFile').files;
  15. //get小于1M的数据
  16. var data=new FormData();
  17. for(var i=0;i<files.length;i++)
  18. {
  19. var file=files[i];
  20. data.append("file"+i+":",file);
  21. }
  22. //ajax上传
  23. var xhr=new XMLHttpRequest();
  24. xhr.onreadystatechange=function()
  25. {
  26. if(xhr.readyState==4)
  27. {
  28. if(xhr.status==200)
  29. {
  30. console.log(xhr.responseText);
  31. }
  32. }
  33. }
  34. var progress=document.querySelector("progress");
  35. //上传的进度回调
  36. xhr.upload.onprogress=function(event){
  37. //长度度量返回布尔值,100%为false,否则为true
  38. if(event.lengthComputable)
  39. {
  40. //当前进度为上传部分/总长度
  41. progress.value=(event.loaded/event.total)*100;
  42. }
  43. };
  44. //发送
  45. xhr.open('post','3.php',true);
  46. xhr.send(data);
  47. }
  48. </script>
  49. </body>
  50. </html>

后台:

  1. <?php
  2. echo json_encode($_POST);
  3. ?>

发表评论

表情:
评论列表 (有 0 条评论,732人围观)

还没有评论,来说两句吧...

相关阅读

    相关 ajax 文件进度

    一:方案分析        基于浏览器的文件上传,为了有更好的用户体验,我们一般就设置一个旋转的图标,旋转的图标无法实时的监控文件上传情况。所以我们将实现一个如何实时的监控