Habe folgendes Problem, ich versuche für einen Datei upload eine Fortschrittsanzeige zu erstellen mit dem Script
von dem tutorial von der seite hier ([wiki]Upload Fortschritt mit PHP + AJAX[/wiki]).
Nur funktioniert das bei mir nicht so ganz. hab schon stunden gegoogelt aber leider ohne Erfolg.
Das problem ist dass, das Array erst nach dem upload mit den Daten gefüllt ist.
ich brauche aber logischerweise den apc [current] wert, bevor der upload fertig ist.
vorher gibt mir das script nur bool(false ) aus.
nach dem upload dann die ganzen werte die da drin stehen müssten
da ist dann aber [current]=[total]
apc einstellungen in der ini sind eigentlich alle richtig.
hier mal der code wie er bei mir aussieht
?>
Alles anzeigen
und hier nochmal der code von der status.php die das array ausgibt was dann im zeitinterval von 0,5 sec abgefragt wird.
Alles anzeigen
Ich hoffe mein Problem ist verständlich und jemand mir helfen.
wäre dafür sehr dankbar.
von dem tutorial von der seite hier ([wiki]Upload Fortschritt mit PHP + AJAX[/wiki]).
Nur funktioniert das bei mir nicht so ganz. hab schon stunden gegoogelt aber leider ohne Erfolg.
Das problem ist dass, das Array erst nach dem upload mit den Daten gefüllt ist.
ich brauche aber logischerweise den apc [current] wert, bevor der upload fertig ist.
vorher gibt mir das script nur bool(false ) aus.
nach dem upload dann die ganzen werte die da drin stehen müssten
da ist dann aber [current]=[total]
apc einstellungen in der ini sind eigentlich alle richtig.
hier mal der code wie er bei mir aussieht
?>
Quellcode
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" xml:lang="de">
- <head>
- <title>APC Upload</title>
- <script type="text/javascript">
- //<![CDATA[
- function ajax(uid) {
- var req;
- try {
- req = window.XMLHttpRequest?new XMLHttpRequest():
- new ActiveXObject("Microsoft.XMLHTTP");
- } catch (e) {
- //Kein AJAX Support
- }
- req.onreadystatechange = function() {
- if ((req.readyState == 4) && (req.status == 200)) {
- document.getElementById("status").innerHTML = req.responseText;
- }
- }
- req.open('GET', 'status.php?uid='+ document.forms.dateihochladen.APC_UPLOAD_PROGRESS.value);
- req.send(null);
- }
- //]]>
- </script>
- </head>
- <br><a href="hochladen2.php">hochladen2</a>
- <body>
- <iframe src="upload.php" name="hidden_upload" border="1px solid"></iframe>
- <div id="status"></div>
- <form action="upload.php" name="dateihochladen" target="hidden_upload" method="post" enctype="multipart/form-data">
- <div>
- <input type="hidden" name="APC_UPLOAD_PROGRESS" value="<?php echo uniqid();?>"/>
- <input type="file" name="upload" />
- <input type="submit" onclick="this.disabled=true; setInterval('ajax(\''+this.form.APC_UPLOAD_PROGRESS.value+'\')', 500); "/>
- </div>
- </form>
- </body>
- </html>
und hier nochmal der code von der status.php die das array ausgibt was dann im zeitinterval von 0,5 sec abgefragt wird.
Quellcode
- <?php
- $arr = apc_fetch("upload_{$_GET['uid']}");
- printf("<pre>%s</pre>", print_r($arr,true));
- echo json_encode(apc_fetch('upload_' . $_GET['uid']));
- $status = apc_fetch('upload_'.$_GET['uid']);
- var_dump($status);
- $current=$status['current'];
- $total=$status['total'];
- $prozent=$current/$total*100;
- echo "bereits hochgeladen:$current<br><br>";
- echo "von insgesamt:$total<br>";
- echo "prozent: $prozent%";
- $progress_name = ini_get("session.upload_progress.prefix").$_GET['uid'];
- echo"prefix: $progress_name";
- die;
Ich hoffe mein Problem ist verständlich und jemand mir helfen.
wäre dafür sehr dankbar.