mmofacts.com

Upload mit Anzeige

gepostet vor 16 Jahre, 4 Monate von standard
hallo,
Ich sitze jetzt seid einigen stunden und Google nach ner Beschreibung wie ich eine Status anzeige beim Upload hin bekomme.
Habe auch versucht fertige Sachen zum laufen zu bekommen. Leider ohne erfolg.
Kann leider nur PHP und damit ist das ja nur mit Hilfe von APC möglich was ich aber nicht installieren kann auf dem Server.
Mir ist die Sprache in der das ganze läuft egal bin gerne bereit mich da einzulesen.
Über jeden Tipp und link würde ich mich freuen.
Mfg
Flo
gepostet vor 16 Jahre, 4 Monate von NeoWhoRU
Jop sowas bekommste in der Regel nur mit Ajax hin .
gepostet vor 16 Jahre, 4 Monate von kevka
Original von NeoWhoRU
Jop sowas bekommste in der Regel nur mit Ajax hin .

Also mir wurde immer gesagt, dass JS nicht auf den Temp Ordner zugreifen und somit nichts uploaden kann.
Falls dies zutrifft (ich bin mir nicht 100%-prozentig sicher) könntest du es über ein unauffälliges iframe versuchen.
MfG Kevka
gepostet vor 16 Jahre, 4 Monate von Fobby
Soweit ich weiß, ist bei diesen Upload-Widgets (gibt es z.B. auch für jQuery) immer Flash mit dabei, womöglich ist eben dies der Grund.
gepostet vor 16 Jahre, 4 Monate von Fornax
Mal davon abgesehen, ob es mit AJAX geht oder nicht (Es geht mit AJAX/JS nicht!): Selbst ein iFrame würde nichts bringen, da der Browser nur zurückliefert, ob die Datei übertragen wurde oder nicht. Man kann nicht "sehen" wieviel er übertragen hat. Dazu sind externe Plugins nötig, z.B. Java oder wie bei digitharald Flash.
Da er jedoch den Upload nicht komplett über Flash machen wollte, sondern die Upload-Ergebnisse mit Javascript weiterverarbeiten will, benutzt er das Javascript Framework mootools
gepostet vor 16 Jahre, 4 Monate von kevka
OK, aber jetzt habe ich noch eine Frage:
Gibt es so ein "UploadFlashFilmchen", dass den aktuellen Status für JS bereitstellt fertig irgendwo zum Download oder muss man sich da extra F4L oder die Demo von Flash laden und sich so etwas selbst zusammen bauen?
MfG Kevka
gepostet vor 16 Jahre, 4 Monate von wusch
Grundsätzlich kann ein upload per AJAX nicht erfolgen, weil man mit JavaScript keinen Zugriff auf das Absenden eines input type="file" elements hat (Man könnte sonst zB die value auf einen ordner setzen wie zB $(el).set('value', '/etc/passwd') und dann still uploaden, deshalb ist bei diesen elementen die value auch nur ein getter und kein setter). Ich möchte auch anmerken, dass das auch nicht der Nutzen von AJAX ist, aber es ist für die meisten Leute eh alles AJAX, auch wenn es gar kein xhr verwendet oder xhr über json ist, hauptsache das wort ist cool.
Ich kann FancyUpload nur empfehlen, wie auch das MooTools Framework selbst das wahrscheinlich beste Framework ist (jQuery = für webdesigner, aber sicher nicht programmierer, prototype ist nicht mehr so toll wie es mal war, mootools = nicht einfach zu lernen, dafür die meisten möglichkeiten und vorallem schnell). Das Problem daran is, dass es Flash benötigt, es funktioniert aber auch einwandfrei, wenn kein Flash vorhanden ist (nur halt ohne den Ladebalken). Leider ist Flash auch etwas eingeschränkt, dass man bei Dateiuploads nur Status Codes zurückgeben kann, so muss man halt - sollte man das selbst implementieren - irgendwas lustiges zurücksenden und halt das parsen (wie 600 für ok und 601 für nicht ok, wie auch immer).
Eine weitere Möglichkeit wäre die Verwendung von PHP5.2 und APC, damit kann man auch was nettes zaubern (google file upload php 5.2), hab auf die schnelle das hier gefunden: blog.joshuaeichorn.com/archives/2006/03/14/php-ajax-file-upload-progress-meter-updates/ (mit demo)
gepostet vor 16 Jahre, 4 Monate von Dunedan
Also ich weiß, dass Uploads auch komplett nur mit JS/AJAX gehen. Zumindest macht das folgendes Drupal-Modul für Drupal ausschließlich mit der Verwendung von jQuery: drupal.org/project/upload_progress
gepostet vor 16 Jahre, 4 Monate von wusch
Original von Dunedan
Also ich weiß, dass Uploads auch komplett nur mit JS/AJAX gehen. Zumindest macht das folgendes Drupal-Modul für Drupal ausschließlich mit der Verwendung von jQuery: drupal.org/project/upload_progress

so ein blödsinn. jaja, aber hauptsache es ist AJAX, was? Es steht beim Plugin nicht mal ajax dabei.
gepostet vor 16 Jahre, 4 Monate von standard
hi,
Danke für die antworten.
Aber ich habe bis jetzt nichts gefunden das funktioniert (Wahrscheinlich bin ich auch teilweise zu blöd).
Gibt es keine vernünftige anleitung.
Und wie gesagt kein APC.
Mfg
Flo
gepostet vor 16 Jahre, 4 Monate von wusch
Original von standard
Gibt es keine vernünftige anleitung.
Und wie gesagt kein APC.

sorry zwecks APC, hab ich überlesen
schau noch mal an, was Klaus in seinem ersten post verlinkt hat: digitarald.de/playground/uplooad.html
Das ist die wahrscheinlich eleganteste Lösung
gepostet vor 16 Jahre, 4 Monate von Dunedan
Original von wusch
so ein blödsinn. jaja, aber hauptsache es ist AJAX, was? Es steht beim Plugin nicht mal ajax dabei.

Ok, AJAX war vielleicht nicht komplett der richtige Begriff, aber die Technik ist im Prinzip ähnlich. Statt XML ist's halt in diesem Fall eine Datei.
Und das ändert nichts an der Aussage meines Posts, dass es offensichtlich komplett ohne Hilfsmittel wie Flash möglich ist einen Fortschrittsbalken bei Uploads zu haben.
gepostet vor 16 Jahre, 4 Monate von wusch
Original von Dunedan
Original von wusch
so ein blödsinn. jaja, aber hauptsache es ist AJAX, was? Es steht beim Plugin nicht mal ajax dabei.

Ok, AJAX war vielleicht nicht komplett der richtige Begriff, aber die Technik ist im Prinzip ähnlich. Statt XML ist's halt in diesem Fall eine Datei.
Und das ändert nichts an der Aussage meines Posts, dass es offensichtlich komplett ohne Hilfsmittel wie Flash möglich ist einen Fortschrittsbalken bei Uploads zu haben.
du checkst es nicht, was? Das zeigt einfach ein Bild an, dass anzeigt, dass etwas geladen wird, aber nicht, wie der Status ist. Sorry, ich hab aber verzweifelt nach irgendeiner logik in diesem Modul gesucht und mich gewundert, warum ich nichts gefunden hab, das ist ein einfaches script, was einen balken anzeigen kann. Siehe feature requests: drupal.org/node/194153
gepostet vor 16 Jahre, 4 Monate von Drezil
naja ..
ich würds wie folgt machen:
beim absenden des formulars wird parallel noch ein xml-request gestartet. Sobald der server anfängt zu antworten wird der jede sekunde weiter geparsed und der server sendet jede sec (in einer schleife eben) den aktuellen stand.
Ist nen simpler HTTP-Push über ein aufgerufenes script. Man darf auf der JS-Seite eben nur nicht auf "request finished" warten, sondern muss den status daver nehmen (war code 3 iirc).
Aber wie gesagt. Wär nur meine Idee und ich hab die noch nicht implementiert, also auch noch nicht getestet.
Aber im prinzip sollte das den geringsten overhead machen.
gepostet vor 16 Jahre, 4 Monate von Dunedan
Original von wusch
du checkst es nicht, was? Das zeigt einfach ein Bild an, dass anzeigt, dass etwas geladen wird, aber nicht, wie der Status ist. Sorry, ich hab aber verzweifelt nach irgendeiner logik in diesem Modul gesucht und mich gewundert, warum ich nichts gefunden hab, das ist ein einfaches script, was einen balken anzeigen kann. Siehe feature requests: drupal.org/node/194153

Dann sag das doch, anstatt irgendwas mit AJAX vor dich hinzugrummeln.
Aber sogesehen entschuldige ich mich natürlich tausendfach bei den Lesern dieses Threads, dass ich
a) die Frage des Threaderstellers missverstand und
b) das Modul nicht vor dem posten ausführlich testete (hatte es nur in Aktion gesehen und fand, dass das ein guter "Upload mit Anzeige" war).
Alle zufrieden nun?
gepostet vor 16 Jahre, 4 Monate von knalli
Original von Drezil
naja ..
ich würds wie folgt machen:
beim absenden des formulars wird parallel noch ein xml-request gestartet. Sobald der server anfängt zu antworten wird der jede sekunde weiter geparsed und der server sendet jede sec (in einer schleife eben) den aktuellen stand.
Ist nen simpler HTTP-Push über ein aufgerufenes script. Man darf auf der JS-Seite eben nur nicht auf "request finished" warten, sondern muss den status daver nehmen (war code 3 iirc).
Aber wie gesagt. Wär nur meine Idee und ich hab die noch nicht implementiert, also auch noch nicht getestet.
Aber im prinzip sollte das den geringsten overhead machen.

Genau so. Und damit es im Safari auch funktioniert, das ganze in einem (versteckten) IFrame.. denn ein Safari (evtl nur Version 2) kann keine XMLRPCS mehr ausführen, sobald onsubmit gestartet wurde..
Allerdings braucht der XMLRPC (ist ja auch nur ein PHP oder ähnliches Script) natürlich die technischen Voraussetzungen, den aktuellen Zustand des Uploads zu erfragen. Serverplugin und/oder Shellscripte.
gepostet vor 16 Jahre, 4 Monate von Kelen
Original von Drezil
naja ..
ich würds wie folgt machen:
beim absenden des formulars wird parallel noch ein xml-request gestartet. Sobald der server anfängt zu antworten wird der jede sekunde weiter geparsed und der server sendet jede sec (in einer schleife eben) den aktuellen stand.
Ist nen simpler HTTP-Push über ein aufgerufenes script. Man darf auf der JS-Seite eben nur nicht auf "request finished" warten, sondern muss den status daver nehmen (war code 3 iirc).
Aber wie gesagt. Wär nur meine Idee und ich hab die noch nicht implementiert, also auch noch nicht getestet.
Aber im prinzip sollte das den geringsten overhead machen.

Macht es nicht genau so auch Rapidshare ?
JS ist da auf jeden Fall dabei, bin aber wieder gaanz still hier
gepostet vor 16 Jahre, 4 Monate von MasterPyoda
Original von Drezil
naja ..
ich würds wie folgt machen:
beim absenden des formulars wird parallel noch ein xml-request gestartet. Sobald der server anfängt zu antworten wird der jede sekunde weiter geparsed und der server sendet jede sec (in einer schleife eben) den aktuellen stand.
Ist nen simpler HTTP-Push über ein aufgerufenes script. Man darf auf der JS-Seite eben nur nicht auf "request finished" warten, sondern muss den status daver nehmen (war code 3 iirc).
Aber wie gesagt. Wär nur meine Idee und ich hab die noch nicht implementiert, also auch noch nicht getestet.
Aber im prinzip sollte das den geringsten overhead machen.

Wo du das schreibst, fällt mir ein, dass sowas doch auch mit PHP möglich sein könnte, zumindest soweit ich weiß. Die Datei, die upgeloadet wird, ist doch erreichbar unter $_FILES['upload']['tmp_name']. $_FILES['upload']['size'] gibt dabei die Größe der Datei an. Nun könnte man, wie bereits gesagt wurde, eine Schleife machen, nach folgendem Prinzip:
Prozentual wird die bereits upgeloadete Größe errechnet. Anschließend werden einzelne Grafikstücke ausgegeben: Man zieht den aktuellen Stand von dem vorherigen ab. Somit hat man das "stück", welches seit dem letzten Vorgang dazu gekommen ist. Und das macht man halt solange, bis die Datei voll oben ist, oder?
Ein Problem könnte aber sein, dass das ganze in einem iframe sein muss, weil sonst lädt die Seite ja nur bis zur Uploadleiste und der Rest der Seite kommt erst, wenn der Upload beendet ist, denk ich mal.
ALTERNATIVE: Du machst da einfach irgendeine bewegende Grafik auf der Uploadseite hin, sodass der Benutzer weiß, dass sich etwas tut. Irgendwie ein Balken, der sich kontinuierlich füllt oder irgendein Kreis, der sich bewegt, oder oder oder ^^ Ist denk ich ganz simpel und erfüllt den Zweck, dass der User wartet, mehr oder weniger
gepostet vor 16 Jahre, 4 Monate von wusch
Original von MasterPyoda
Wo du das schreibst, fällt mir ein, dass sowas doch auch mit PHP möglich sein könnte, zumindest soweit ich weiß. Die Datei, die upgeloadet wird, ist doch erreichbar unter $_FILES['upload']['tmp_name']. $_FILES['upload']['size'] gibt dabei die Größe der Datei an. Nun könnte man, wie bereits gesagt wurde, eine Schleife machen, nach folgendem Prinzip:
Prozentual wird die bereits upgeloadete Größe errechnet. Anschließend werden einzelne Grafikstücke ausgegeben: Man zieht den aktuellen Stand von dem vorherigen ab. Somit hat man das "stück", welches seit dem letzten Vorgang dazu gekommen ist. Und das macht man halt solange, bis die Datei voll oben ist, oder?

php wird ja erst ausgeführt, wenn die gesamte datei hochgeladen ist.

Auf diese Diskussion antworten