So senden Sie den Curl-Upload-Fortschritt an Ajax, um angezeigt zu werden

9

Was ich versuche ist, die Datei- / Dateiinformationen mit ajax in upload.php hochzuladen und dann die gleichen Informationen erneut auf einen entfernten Server hochzuladen, indem ich nach remoteUpload.php locke. Schließlich führe ich in remoteUpload.php file den eigentlichen Upload der Datei / Dateien durch.

Beim ersten Schritt - & gt; Lade die Datei- / Dateiinformationen in upload.php hoch. Ich zeige einen Fortschrittsbalken dieses Schrittes mit Ajax an.

Aber der zweite Schritt - & gt; Laden Sie die gleichen Informationen erneut auf den Remote-Server mit curl to remoteUpload.php die Fortschrittsleiste wird nicht angezeigt, und das ist mein Problem.

Wie wird der Fortschrittsbalken für den zweiten Schritt von Ajax angezeigt?

Javascript:

%Vor%

PHP: (upload.php)

%Vor%

PHP: (remoteUpload.php)

%Vor%     
Lion King 16.12.2015, 13:54
quelle

1 Antwort

2

Sie können in progressCallback() bis $_SESSION your $progress und von js Seite nach "first step" upland complete run setIntevral(/*ajax*/) make ajax Anfragen an Server erhalten $_SESSION['progress] und zweiten Fortschrittsbalken anzeigen ( oder lade den ersten Fortschrittsbalken bis 50% und fahre mit dem Laden der zweiten 50%) in deinem Formular fort und wenn es fertig ist, rufe clearInterval()

auf

DETAILLIERTE ANTWORT

Erläuterung: Wir zählen den Fortschritt in der folgenden Logik. Wenn wir 5 Dateien auf einmal hochgeladen haben (wie in Ihrem Fall scheint, war die hochgeladene Datei), teilen wir 100% durch 5 und erhöhen um 25% progress während einer Datei curl submit, dazu benötigen Sie folgende 5 Änderungen

1) rufe irgendwo oberhalb von session_start() in deinem upload.php auf, wenn es nicht gemacht wird

2) wird in der Gesamtzahl der Sitzungsdateien und im aktuellen Verarbeitungsdateiindex gespeichert

%Vor%

3) Speichern in progressCallback function aktuelle Fortschrittszahl in 0-100 format

%Vor%

4) Erstellen Sie eine neue getUploadProgress.php und geben Sie eine json-codierte Fortschrittsinformation aus der Sitzung

zurück %Vor%

5) Fügen Sie in Ihrem ajax.onreadystatechange setInteval Funktionsaufruf hinzu und definieren Sie in Ihrer js globalen Variable progressSetInterval

%Vor%

HINWEIS: Bei der Verwendung dieses Beispielcodes werden natürlich zusätzliche rounds , JS/PHP functions Addition, variable Anpassungen oder einige logische Anpassungen für mehr Effektivität benötigt, aber im Grunde ist dies eine Logik von eine Option, die Sie verwenden können

    
Armen 16.12.2015 14:18
quelle