session.upload_progress.enabled
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
brauche
button
code
datei
erscheinen
file
formular
funktion
http
laufrad
mache
problem
session
simples gefunden code
test
url
vermerk
warte
warten
zugreifen
-
Hallo zusammen,
ich will ein Upload-Script schreiben, bei dem ich Dateien hochladen kann ohne die Seite neu zu laden. Während des Uploads soll eine Meldung "Bitte warten" o.ä. erscheinen. Problem ist, dass der Submit aus der iFrame Einbindung stammt, das "Bitte warten"-DIV jedoch im Hauptfenster gelagert ist.
Nun habe ich ein Upload Formular über iFrame eingebunden, sodass die Seite nicht neu lädt, wenn ich Submit ausführe. Zum Wartebildschirm habe ich folgende Methoden ausprobiert:
1.) Sobald submit ausgeführt wird, wird ein Eintrag in die Datenbank geschrieben mit dem Vermerk "fertig" und der SessionID. Danach wird die Datei bearbeitet und im DIR gespeichert. Der Vermerk wird erst nach Abschluss des Uploads auf 1=fertig gesetzt. Über Ajax frage ich den Status von fertig ab. Solange fertig<>1, soll "Bitte warten" erscheinen.
Problem: Da nicht die Dateibearbeitung sondern der Upload lange dauert und der Upload vor Ausführung des Codes durchgeführt wird, wird der Datenbankeintrag erst "kurz vor Schluss" erstellt. -> Somit ist diese Methode keine Alternative mehr...
2.) Statt über Submit führe ich das Uploadscript über JS aus und füge ein weiteres Formular ein:
function upload(){ document.getElementById('form1').submit(); //erstellt einen Datenbankeintrag document.getElementById('form2').submit(); //das eigentliche File-Upload-Formular }
Problem: Auch hier wird der gesamte Code erst nach Abschluss des Uploades in den Tempdir des Servers ausgeführt, also viel zu spät.
3.) Ich habe gelesen, dass session.upload_progress.enabled eine Möglichkeit bietet, die Upload-Parameter in die Session zu schreiben und mit AJAX auszulesen.
Ist dies bei Lima möglich?
Habt ihr eine Idee, wie ich ansonsten das "Bitte warten" - Div im Hauptfenster einblenden kann, sobald auf das Submit im iFrame geklickt wird?
P.S. Ob der Upload korrekt ausgeführt wurde muss nicht abgefragt werden, auch uninteressant ist die Prozentangabe. Nur wichtig ist, dass das "Bitte warten"-Div im Hauptfenster erscheint, sobald im iFrame auf Submit geklickt wird. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
hier mal etwas fertig zum ausprobieren: https://github.com/valums/file-uploader
-
esadat schrieb:
na dann gibt es nur mehr das. ich habe es auf lima getestet (example1.html), funktioniert perfekt! beweismittel: vor upload, nach upload!
hi,
das ist zu kompley, brauche nur eine Möglichkeit, das "Warte"-Div anzuzeigen.
==== edit ====
beweismittel nicht mehr online :(
Beitrag zuletzt geändert: 31.12.2012 4:01:20 von czibere -
So hab jetzt was simples gefunden :)
<iframe> ... <input onclick="parent.zeigemeinwartediv();" type="submit" name="" value="""/> ... </iframe>
Durch parent kann man im iframe auf Funktionen des Hauptfensters zugreifen. -
esadat schrieb:
das ist natürlich schön für dich. kannst du aber gelich paar leuten hier, die interesse hätten, gleich auch erklären was dahinter steckt? was soll bitte zeigemeinwartediv() und vor allem auf welche art und weise etwas bewirken? ein link zur lösung wäre auch brennend interessant, noch viel mehr natürlich etwas code ;)
So hab jetzt was simples gefunden :)
<iframe> ... <input onclick="parent.zeigemeinwartediv();" type="submit" name="" value="""/> ... </iframe>
Durch parent kann man im iframe auf Funktionen des Hauptfensters zugreifen. -
hi, aufgrund der Nachfrage eine Erklärung zu "meinwartediv":
Ich will ein Upload-Script schreiben, auf der eine Datei hochgeladen werden kann ohne dass die Seite neu geladen wird. Daher verwende ich zum Upload ein IFrame mit einem Hochlade-Button. Damit man aber sieht, dass etwas passiert und man warten soll, soll ein Laufrad oder ähnliches eingeblendet werden. Das jedoch nicht im iFrame sondern in der Hauptseite über die ganze Seite. Den Ladebalken/Laufrad habe ich in ein Div eingebettet, daher "meinwartediv". Die js-Funktion zum Einblenden meines wartedivs heißt "zeigemeinwartediv()".
Problem war nur, dass die Seite nicht mitbekommt, wenn ich im IFrame was anklicke. Die Lösung ist, dass ich dem Button im IFrame ein onclick-Event zuweise, dass auf das js-Script der Hauptseite zugreift. Das Zugreifen des IFrames auf meine JS-Funktion in der Hauptseite mache ich mit parent. + Name meiner Funktion, also parent.zeigemeinwartediv(); Deshalb was simples, weil ich nur parent vor meine Funktion schreiben musste, was ich vorher jedoch nicht wusste.
Die Abfrage, ob was hochgeladen wurde, mache ich über Ajax. Sobald die Datei hochgeladen ist, wird das Wartediv durch eine andere js-Funktion wieder ausgeblendet. -> FERTIG! :) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage