- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
-6ren">
我正在创建一个文件上传进度条,但无法使其正常工作。相关代码如下。
关联表单 HTML
<form action="" method="post" id="uploadForm" enctype="multipart/form-data">
<div id="uploadFields">
<?php
$val = time();
echo '<input type="hidden" class="progress" name="'.ini_get('session.upload_progress.name').'" value="'.$val.'" required />";
?>
<label>Select file to upload:</label>
<input type="file" name="fileToUpload" id="fileToUpload" required><br><br>
Ajax.js
$(document).ready(function(){
$('#uploadForm').submit(function(){
/***I insert picture to upload page, this responds to my later AJAX request***/
sendRequest();
});
});
function sendRequest() {
var progress = $(".progress").val();
$.ajax({
type: "POST",
url: ajaxurl,
data: {
PHP_SESSION_UPLOAD_PROGRESS: progress,
action: "uploadProgress"
},
success:function(result){
console.log(result);
handleResponse(result);
}
});
}
function handleResponse(result) {
if (result < 100) {
$("#loading-gif").css("left", result + "%");
setTimeout("sendRequest()", 1000);
}
}
PHP进度函数
function uploadProgress(){
$key = ini_get("session.upload_progress.prefix") . $_POST[ini_get("session.upload_progress.name")];
/*** error line ***/ echo print_r($_SESSION[$key]);
if(!empty($_SESSION[$key])) {
$current = $_SESSION[$key]["bytes_processed"];
$total = $_SESSION[$key]["content_length"];
echo $current < $total ? ceil($current / $total * 100) : 100;
}else {
echo 'empty';
}
wp_die();
}
我浏览了数十个论坛,阅读了 php.net 上的手册和说明,尝试了不同的形式来尝试使其正常工作,但它不起作用。具体来说,通过上面的代码,我得到错误日志:PHP 注意:*未定义索引:upload_progress_1468284727 in D:*****\wordpress\*****\functions.php on line 581*
“14682284727”是一个动态值(通过 time() 生成),以确保没有竞争条件,并且每次上传都是唯一的 - 希望这也能消除任何缓存问题。我已经回显了表单中给出的时间,并将相同的变量传递给了进度函数和错误日志,它们是完全相同的。我没有通过 FastCGI 运行 PHP。
我在 PHP.ini 中设置了所有与 session_upload_progress 相关的指令,重要的是session.upload_progress.enabled = On、session.upload_progress.cleanup =关闭,这应该允许我打印出数组。我正在运行 PHP 5.4.5,并对所有文件/文件夹具有管理员访问权限。所有其他 session 变量都被保留,并且我正在逐页成功地使用它们。
我已经对此进行了大量的调试,但没有任何进展。我被困在这一点上。进度函数在打印 $_SESSION 数组时返回 1,在数组大小时返回空。没有基于闪存的解决方案。我只是想知道我错过了什么,我做错了什么,我可以做得更好吗?
任何想法/建议将不胜感激。
最佳答案
一个老问题,但这也许会帮助任何偶然发现同样问题的人进行故障排除。
如果您确定满足使用 session 正确执行上传进度的所有要求,您可以通过手动检查 session 文件来开始故障排除。根据您的服务器配置,其路径会有所不同,您可以使用 session_save_path()
检查它。
如果文件生成正确,您应该使用开发人员工具手动检查正在发送的内容以及发送的顺序。
此外,在 AJAX 调用中,您必须将这两个更改为 false:
contentType: false,
processData: false,
有关 jQuery.ajax() API documentation 的更多信息
关于PHP session 上传进度 "Undefined index: upload_progress_"WordPress,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38318687/
我正在创建一个文件上传进度条,但无法使其正常工作。相关代码如下。 关联表单 HTML "; ?>
我是一名优秀的程序员,十分优秀!