Huhu
sagt mal ich möchte eine Fortschrittsanzeige für mein Uploadskript und habe nach einem Tutorial gesucht und das hier gefunden: ultramegatech.com/blog/2008/ … bar-php/5/
So die Demo bei den: ultramegatech.com/blog/examp … d_form.php
und die dateien bei mir: upload.spandauer007.xe.cx/1
Bei mir wird nur der Balken angezeigt mehr nicht. Warum auch immer?! APC ist installiert und aktiviert.
Habt ihr eine Ahnung?
Grüße
Moin,
eine Uploadanzeige mit reinem PHP ist de facto gar nicht möglich. Soll heissen, es wird wohl an den AJAX/JavaScript-Teil von dem Script liegen.
Eventuell stimmen bei dir schlichtweg die Bezeichnungen nicht. Am besten ist es eh, wenn du uns deinen Quelltext zeigst, damit wir dir effektiver helfen können.
Aufs Blaue hineinraten könnte nur helfen, wenn ich eine Glaskugel hätte und Hellseher wäre
MfG
ich dachte ihr habt so ne schöne glaskugel
schreib ich mir für dich auf fürs nächste geburtstagsgeschenk hihi
den quelltext findet ihr unter
ultramegatech.com/blog/2008/ … php/all/1/
Da woThe Finished Product fängt der quelltext von 3 dateien an: upload_form.php, upload.php & getprogress.php
grüße und danke
hummer
2. Juli 2009 um 11:30
4
Dann zeig uns doch mal, was du probiert hast. Der Link upload.spandauer007.xe.cx/1 funktioniert nämlich nicht.
jetzt schon xD
ihr müsst upload_form.php öffnen
[quote=“myPages”]Moin,
eine Uploadanzeige mit reinem PHP ist de facto gar nicht möglich. Soll heissen, es wird wohl an den AJAX/JavaScript-Teil von dem Script liegen.
[/quote]
Genau so isses, da ist Ajax im Spiel. zunächst wird nach einer Sekunde nachgefragt, danach alle 1/10 sek.
Das ist der Code hier:
[...]
<script type="text/javascript">
var HttpRequestObject = false;
if(window.XMLHttpRequest) {
HttpRequestObject = new XMLHttpRequest();
}
else if(window.ActiveXObject) {
HttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
}
function startProgress(uid) {
document.getElementById('upload').style.display = 'none';
document.getElementById('pb_outer').style.display = 'block';
setTimeout('getProgress("' + uid + '")', 1000);
}
function getProgress(uid) {
if(HttpRequestObject) {
HttpRequestObject.open('GET', 'getprogress.php?uid=' + uid, true);
HttpRequestObject.onreadystatechange = function() {
if(HttpRequestObject.readyState == 4 && HttpRequestObject.status == 200) {
var progress = HttpRequestObject.responseText;
document.getElementById('pb_inner').style.width = progress + '%';
document.getElementById('pb_inner').innerHTML = progress + '%';
if(progress < 100) {
setTimeout('getProgress("' + uid + '")', 100);
}
else {
document.getElementById('pb_inner').innerHTML = 'Upload Complete!';
}
}
}
HttpRequestObject.send(null);
}
}
</script>
[...]
Wenn du nun als else ergänzt, wie in dem nachfolgenden Code, bekommst du zumindest schonmal einen alert, wenn das Ajax fehlschlägt. Vllt hilft es ja, den Fehler einzugrenzen:
<script type="text/javascript">
var HttpRequestObject = false;
if(window.XMLHttpRequest) {
HttpRequestObject = new XMLHttpRequest();
}
else if(window.ActiveXObject) {
HttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
}
function startProgress(uid) {
document.getElementById('upload').style.display = 'none';
document.getElementById('pb_outer').style.display = 'block';
setTimeout('getProgress("' + uid + '")', 1000);
}
function getProgress(uid) {
if(HttpRequestObject) {
HttpRequestObject.open('GET', 'getprogress.php?uid=' + uid, true);
HttpRequestObject.onreadystatechange = function() {
if(HttpRequestObject.readyState == 4 && HttpRequestObject.status == 200) {
var progress = HttpRequestObject.responseText;
document.getElementById('pb_inner').style.width = progress + '%';
document.getElementById('pb_inner').innerHTML = progress + '%';
if(progress < 100) {
setTimeout('getProgress("' + uid + '")', 100);
}
else {
document.getElementById('pb_inner').innerHTML = 'Upload Complete!';
}
}
}
HttpRequestObject.send(null);
}else
alert('XMLHTTP fehlgeschlagen');
}
</script>
huhu,
hm hilft mir leider auch nicht
hat keiner mehr ne ahnung?
grüße und danke für eure bisherigen antworten und weitere antworten
BnW
3. Juli 2009 um 08:58
8
Hab grad mal mit firebug geguckt. Ergebniss des ajax requests ist:<br />
<b>Warning</b>: Division by zero in <b>/var/www/virtual/spandauer007.xe.cx/upload/htdocs/1/getprogress
.php</b> on line <b>7</b><br />
0
Aja, da sieht man mal wieder, wie wichtig es ist, die Rückgabe erstnochmal zu prüfen, und gegebenenfalls einen Fehler auszugeben…
dann wär ich schon gesperrt xd
hummer
13. Juli 2009 um 18:26
13
Das liegt wohl daran, dass der apc nicht mit dem Zend Optimizer kompatibel ist.
Als Alternative kannst du auch die extension php_uploadprogress nutzen.
Hier ne kleine Demo, wie ich sie nutze
Huhu,
bei mir tut die nicht.
Kannst du mir sagen woran das liegt?
Oder mir evt. dein Skript geben das wär nett
Grüße
hummer
14. Juli 2009 um 14:39
15
Laut phpinfo() scheint die extension ja geladen zu sein.
Was hast du bisher versucht?
Funktioniert das Beispiel, das in dem Archiv war?
Huhu,
genau das haben wir hochgelanden. Leider hat es nichts gemacht.
der Link:
upload.spandauer007.xe.cx/pro/Ne … rzeichnis/
grüße
hummer
14. Juli 2009 um 16:22
17
Füge das mal in die php.ini ein, falls es noch nicht drin steht.
Vorhin gab es ne Fehlermeldung, dass ich das machen sollte. Habs schon gemacht.
hummer
22. Juli 2009 um 16:40
19
Hi,
hab grade nochmal in meine php.ini geschaut.
uploadprogress.file.filename_template="/tmp/upload_status_%s"
uploadprogress.file.contents_template="/tmp/upload_contents_%s"
uploadprogress.get_contents=1
vielleicht funktionierts dann damit.