使用PHP获取上传进度

我无法使用PHP获取文件上传的进度,我的网站托管的服务器使用的是php v5.6。

我也在我的cpanel管理器中启用了’uploadprogress’设置。

我尝试按照本教程: 使用PHP和JavaScript跟踪上传进度

但我将其与其他一些使用ajax请求处理文件上传的代码合并。

我的表格代码:

<input type="hidden" value="myForm" name=""> Upload
Upload:
0%

Javascript代码:var timer;

 function uploadFile() { var uploadFile = $("#file")[0].files[0]; timer = setInterval(getStatus,1000); $.ajax( { url : "upload.php", type: 'POST', data : new FormData($('form')[0]), cache: false, contentType: false, processData: false, xhr: function() { var myXhr = $.ajaxSettings.xhr(); if (myXhr.upload) { // For handling the progress of the upload myXhr.upload.addEventListener('progress', function(e) { if (e.lengthComputable) { if (e.loaded < e.total) { $('#process').html(((e.loaded / e.total) * 100).toFixed(1) + "%"); } else { $('#process').html("Processing upload, please wait."); } } } , false); } return myXhr; }, success: function (response) { $('#process').html(response); clearTimeout(timer); } } ); } function getStatus() { $.get("progress.php", function(response) { $("#process2").html(response); } ); } 

upload.php的

 session_start(); $uploadedFile = $_FILES["file"]; move_uploaded_file($uploadedFile['tmp_name'],$uploadedFile["name"]); echo $uploadedFile["name"]." was uploaded"; 

progress.php

 session_start(); $key = ini_get("session.upload_progress.prefix") . "myForm"; if (!empty($_SESSION[$key])) { $current = $_SESSION[$key]["bytes_processed"]; $total = $_SESSION[$key]["content_length"]; echo $current < $total ? ceil($current / $total * 100) : 100; } else { echo 100; } 

不幸的是在我的JS中:$(’#process’)。html(((e.loaded / e.total)* 100).toFixed(1)+“%”);

只获取获取请求所需的时间,而不是实际上传文件。

我希望我已经提供了足够的信息来获得一些帮助。

您必须确保您的服务器使用mod_php运行PHP。

我在nginx上运行Drupal并警告我

“您的服务器无法显示文件上载进度。文件上载进度需要运行带有mod_php的PHP的Apache服务器。”