2016-07-12 12 views
0

Ich erstelle eine Dateiupload Fortschrittsbalken, und ich kann es nicht funktionieren. Der relative Code ist wie folgt.PHP-Sitzung Upload-Fortschritt "Undefinierter Index: upload_progress_" Wordpress

Im Zusammenhang Formular 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 Fortschritt Funktion

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(); 
} 

ich durch Dutzende von Foren gegangen sind, lesen Sie die Handbücher und ich Anweisungen auf php.net, versucht verschiedene Formen zu versuchen, das funktioniert, aber es funktioniert nicht. Genauer gesagt, mit dem Code oben, bekomme ich das Fehlerprotokoll: PHP Hinweis: * Undefinierter Index: upload_progress_1468284727 in D: ***** \ wordpress \ ***** \ functions.php on line 581 *

Der '14682284727' ist ein dynamischer Wert (über die Zeit()), um sicherzustellen, dass keine Wettlaufsituation vorliegt und jeder Upload einzigartig ist - in der Hoffnung, dass dadurch auch das Caching-Problem behoben wird. Ich habe die im Formular angegebene Zeit und die Variable, die an die Fortschrittsfunktion übergeben wurde, und das Fehlerprotokoll wiederholt, und sie sind genau dieselben. Ich führe PHP nicht über FastCGI.

Ich habe alle session_upload_progress entsprechenden Anweisungen in der php.ini gesetzt, was wichtig ist session.upload_progress.enabled = On, session.upload_progress.cleanup = Aus, sollte dies gestatten Sie mir, aus dem Array drucken . Ich benutze PHP 5.4.5 mit Admin-Zugriff auf alle Dateien/Ordner. Alle anderen Sitzungsvariablen werden beibehalten, und ich verwende sie erfolgreich von Seite zu Seite.

Ich habe eine lächerliche Menge an Debugging getan, aber ohne Fortschritt. Ich stecke an diesem Punkt fest. Die Fortschrittsfunktion gibt 1 zum Drucken des $ _SESSION-Arrays zurück und leer wie für die Größe des Arrays. Keine Flash-basierte Lösung. Ich will nur wissen, was ich verpasst habe, was ich falsch mache, was ich besser machen könnte?

Alle Ideen/Vorschläge würden am meisten geschätzt werden.

+0

Können Sie einfach Ihre Eingabe Echo auf 'echo‚ '; 'Die Art, wie du es geschrieben hast, ist super unlesbar und anfällig für versehentliche zusätzliche Anführungszeichen. Und es schmerzt meine Augen xD –

+0

Entschuldigung, ich habe zugestimmt, ich habe meine neueste Version gepostet. Ich habe ein paar verschiedene Formate ausprobiert. Ich persönlich bevorzuge:

+0

In jedem Fall ist es in Ordnung. Die flüchtenden Zitate waren etwas, das mir in die Augen "gestochert" hat;) –

Antwort

0

Eine alte Frage, aber vielleicht wird dies jedem helfen, der auf das gleiche Problem stößt, mit der Fehlersuche.

Wenn Sie sicher sind, dass Sie alle Anforderungen erfüllen, um den Upload-Fortschritt mit der Sitzung korrekt durchzuführen, können Sie die Fehlerbehebung starten, indem Sie die Sitzungsdatei manuell überprüfen. Abhängig von Ihrer Serverkonfiguration unterscheidet sich der Pfad, Sie können es mit session_save_path() überprüfen.

Wenn die Datei korrekt generiert wird, sollten Sie manuell mit den Entwicklertools überprüfen, was und in welcher Reihenfolge gesendet wird.

Auch in Ihrem AJAX rufen Sie die beide auf false ändern müssen:

contentType: false, 
processData: false, 

Weitere Informationen über jQuery.ajax() API documentation

Verwandte Themen