Schrift
[thread]11184[/thread]

Progress Bar für Upload über HTTP

Leser: 2


<< >> 6 Einträge, 1 Seite
Froschpopo
 2008-01-25 01:35
#105135 #105135
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Ich möchte ein Progress Bar für einen HTTP-Upload basteln.
Mit Ajax bin ich mittlerweile soweit vertraut als dass ich es umsetzen kann.
Mein Plan: Ich starte über JavaScript in einem X Intervall einen asychronen Request der ein serverseitiges Perlscript startet.
Das Perlscript vergleicht die Größe der hochzuladenden Datei mit dem bereits hochgeladenen Inhalt und errechnet daraufhin einen Prozentwert.

Aber meine Frage ist: die Größe einer Datei kann man ja normalerweise erst ermitteln, wenn sie bereits auf der Festplatte ist.
Gibt es eine Möglichkeit, über CGI die Größe einer Datei VOR DEM UPLOAD zu ermitteln?
Die Gesamtgröße könnte ich dann mit den bereits übertragenen Bytes vergleichen und so einen Wert errechnen.
GwenDragon
 2008-01-25 12:34
#105147 #105147
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
Froschpopo+2008-01-25 00:35:35--

Gibt es eine Möglichkeit, über CGI die Größe einer Datei VOR DEM UPLOAD zu ermitteln?
Die Gesamtgröße könnte ich dann mit den bereits übertragenen Bytes vergleichen und so einen Wert errechnen.
Über CGI nicht, denn CGI bekommt ja erst alle Daten und kann daraus dann die Größe bestimmen.
murphy
 2008-01-25 14:47
#105158 #105158
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
GwenDragon+2008-01-25 11:34:59--
[...] CGI bekommt ja erst alle Daten und kann daraus dann die Größe bestimmen.


Wenn das CGI über POST aufgerufen wird, sollte der Client doch in der Regel den Content-Length-Header setzen. Wenn der Webserver jetzt nicht die gesamten POST-Daten puffert, bevor er das CGI-Programm startet, so kann selbiges auch die CONTENT_LENGTH-Umgebungsvariable inspizieren, bevor es beginnt, die POST-Daten von der Standardeingabe zu lesen und hat damit die Längenangabe zur Verfügung, bevor sämtliche Daten vom Client beim Server angekommen sein müssen.

Ob das allerdings in der Form auch vom CPAN:CGI-Modul unterstützt wird, weiß ich nicht. Mit mod_perl sollte es sich auf jeden Fall lösen lassen.
When C++ is your hammer, every problem looks like your thumb.
Gast Gast
 2008-01-29 16:16
#105323 #105323
Hallo,
ich habe kürzlich in einer Anwendung Apache2::UploadProgress eingesetzt, anzusehen unter www.calendrino.de. Wie der Name schon sagt setzt das aber Apache2 und mod_perl voraus.
Mit CGI wird das m.E. schon prinzipiell gar nicht gehen, da eine Dateie beim Upload zuerst im tmp verzeichnis abgelegt wird und erst wenn alles da ist wird das CGI-Script aufgerufen, man muss das also im Apache machen.


Rolf Schaufelberger
ptk
 2008-01-29 21:29
#105339 #105339
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Mit dem *Modul* CGI geht es vielleicht nicht, aber mit der *Technik* CGI schon: letztendlich kommen die POST-Daten auch nur über STDIN herein.
pq
 2008-01-30 00:45
#105347 #105347
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
auch CGI.pm bietet immerhin die Möglichkeit, während des uploads einen callback einzubauen.
so dass man z.b. bei einer bestimmten grösse abbrechen kann.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< >> 6 Einträge, 1 Seite



View all threads created 2008-01-25 01:35.