sessionProgress.php 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <?php
  2. /**
  3. * Simple Ajax Uploader
  4. * Version 2.6.2
  5. * https://github.com/LPology/Simple-Ajax-Uploader
  6. *
  7. * Copyright 2012-2017 LPology, LLC
  8. * Released under the MIT license
  9. *
  10. * Returns upload progress updates for browsers that don't support the HTML5 File API.
  11. * Falling back to this method allows for upload progress support across virtually all browsers.
  12. * Requires PHP 5.4+
  13. * Further documentation: http://php.net/manual/en/session.upload-progress.php
  14. *
  15. */
  16. session_start();
  17. if (!isset($_POST[ini_get('session.upload_progress.name')])) {
  18. exit(json_encode(array('success' => false)));
  19. }
  20. $key = ini_get('session.upload_progress.prefix') . $_POST[ini_get('session.upload_progress.name')];
  21. if (!isset($_SESSION[$key])) {
  22. exit(json_encode(array('success' => false)));
  23. }
  24. $progress = $_SESSION[$key];
  25. $pct = 0;
  26. $size = 0;
  27. if (is_array($progress)) {
  28. if (array_key_exists('bytes_processed', $progress) && array_key_exists('content_length', $progress)) {
  29. if ($progress['content_length'] > 0) {
  30. $pct = round(($progress['bytes_processed'] / $progress['content_length']) * 100);
  31. $size = round($progress['content_length'] / 1024);
  32. }
  33. }
  34. }
  35. echo json_encode(array('success' => true, 'pct' => $pct, 'size' => $size));