-6ren">
gpt4 book ai didi

PHP session 上传进度 "Undefined index: upload_progress_"WordPress

转载 作者:行者123 更新时间:2023-12-01 05:29:37 25 4
gpt4 key购买 nike

我正在创建一个文件上传进度条,但无法使其正常工作。相关代码如下。

关联表单 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 = Onsession.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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com