使用PHP获取上传进度
我无法使用PHP获取文件上传的进度,我的网站托管的服务器使用的是php v5.6。
我也在我的cpanel管理器中启用了’uploadprogress’设置。
我尝试按照本教程: 使用PHP和JavaScript跟踪上传进度
但我将其与其他一些使用ajax请求处理文件上传的代码合并。
我的表格代码:
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服务器。”