파일 업로드 진행률 표시 줄을 만들고있어 제대로 작동하지 않습니다. 상대 코드는 다음과 같습니다.PHP 세션 업로드 진행 "Undefined index : upload_progress_"Wordpress
사용 설명서의 내용을 숙지 양식 HTML에게 내가 포럼 수십 겪었어요
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();
}
<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 진행 기능과 관련 그리고 나 php.net에서 nstructions,이 일을하려고 다른 형태의 시도했지만 작동하지 않습니다. 특히, 위의 코드를 사용하면 오류 로그가 표시됩니다. PHP 알림 : * 정의되지 않은 색인 : D : ***** \ wordpress \ ***** \ function.php 581 행의 * upload_progress_1468284727 *
'14682284727'은 경쟁 조건이 없음을 보장하고 각 업로드가 고유하도록 동적 값 (시간())으로 작성됩니다. 캐싱 문제도 제거해야합니다. 주어진 시간을 폼에서 출력했고, 동일한 변수가 진행 함수와 오류 로그에 전달되었으며, 이들은 똑같습니다. FastCGI를 통해 PHP를 실행하지 않습니다.
나는 모든 session_upload_progress 관련 지침,에 중요한 session.upload_progress.enabled = php.ini 파일에서 설정 한 session.upload_progress.cleanup = 오프,이 날 배열을 인쇄 할 수 있도록해야한다 . 모든 파일/폴더에 대한 관리자 권한으로 PHP 5.4.5를 실행 중입니다. 다른 모든 세션 변수가 유지되고 있으며 페이지에서 페이지로 성공적으로 사용하고 있습니다.
어리석은 양의 디버깅을했지만 아무런 진전이 없었습니다. 나는이 시점에서 붙어있다. progress 함수는 $ _SESSION 배열을 인쇄 할 때 1을 반환하고 배열 크기만큼 비 웁니다. 플래시 기반 솔루션이 없습니다. 나는 내가 무엇을 놓쳤는 지, 내가 뭘 잘못하고 있는지, 내가 더 잘할 수 있는지 알고 싶다.
모든 아이디어/제안이 가장 만족 스러울 것입니다.
jQuery.ajax() API documentation에 당신은 단지 '에코'<입력 유형 = "숨겨진"에 에코 입력을 변경할 수 있습니다
당신의 AJAX에서 또한하면 사람들은이 false로 변경해야 전화 "value =" '. $ val.' "required /> ';'작성한 방법은 읽을 수없고 읽기 쉽습니다. 실수로 추가 인용문. 그리고 그것은 내 눈을 아프게 xD –
죄송합니다, 나는 동의합니다, 나는 최신 버전을 게시했습니다. 몇 가지 다른 형식을 시도했습니다. 나는 개인적으로 선호한다 : –
어느 쪽이든 괜찮습니다. 이스케이프 인용문은 눈에 나를 찔렀다.) –