Guten Tag,
wie kann man den Uploadstatus mit Python rausfinden, wenn der Upload über ein ganz normale html-Formular geschickt wird?
Meine Idee war diese hier:
http://python.darktree.org/?paste:155
Der Status soll also in eine externe Datei geschrieben werden, die man auslesen kann. Das Problem ist jedoch, dass die Chunks erst nach dem Upload geschrieben werden und ich absolut keine Idee habe, wie man sonst an den Status des Uploads kommen kann.
Gibts irgendwie eine Möglichkeit die Temp-Dateien, wie beim Upload angelegt werden, abzugreifen, so dass man damit den Fortschritt bestimmen kann?
Ich hoffe ihr könnt mir da helfen. Bin leider was Python & CGI angeht nicht wirklich fit.
edit:
Was ich gerade noch zu dem Thema gefunden habe wäre das: http://pythonpaste.org/module-paste.pro ... ml#classes
Aber ich habe keine Ahnung, wie ich die Klassen verwenden sollte!
Vielen Dank schonmal und noch schöne Rest-Ostertage
metty
Uploadstatus mit Python über CGI
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Ich hatte in der Richtung auch mal was gemacht, siehe: http://www.python-forum.de/post-27009.html#27009
Ich weiß nicht mehr wie es ausgegangen ist, ich hab irgendwann einfach aufgehört. Generell geht es aber glaube ich schon, auch mit CGI...
Ich weiß nicht mehr wie es ausgegangen ist, ich hab irgendwann einfach aufgehört. Generell geht es aber glaube ich schon, auch mit CGI...
Das Problem für mich ist es halt, Informationen über den Upload während des Uploads zu bekommen.
Das jetztige Skript geht ja hin und schreibt den File erst nach dem Upload.
Wie kann ich denn direkt den http-File empfangen?
Versuche da gerade was mit "sys.stdin.read(1024*16)" aber Erfolg bringt mir das auch noch nicht gerade. Einer von euch da nen Tipp?
Danke!
Das jetztige Skript geht ja hin und schreibt den File erst nach dem Upload.
Wie kann ich denn direkt den http-File empfangen?
Versuche da gerade was mit "sys.stdin.read(1024*16)" aber Erfolg bringt mir das auch noch nicht gerade. Einer von euch da nen Tipp?
Danke!
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Wie ich in dem anderen Thread schon vermutet habe, kann es durchaus sein, das Apache erst dann das CGI Skript aufruft, wenn er die Request Daten vollständig empfangen hat. Ob das wirklich so ist, weiß ich aber nicht.
so, habe jetzt mal folgendes ausprobiert:
Bei dem Code wird die Datei geschrieben, während der Browser lädt. Geht also soweit schonmal. Die Frage ist jetzt aber, wie ich zeitgleich die Daten aus dem Skript ausbekomme, so dass ich Sie live auslesen kann. Das mit der test.txt als Statusdatei scheint mir noch nicht die optimale Lösung zu sein, weil ich mit einem zweiten Script diese Datei ausgeben müsste, die aber zu lange lädt, bis die erste Ausgabe kommt.
EDIT: ok geht defintiv nicht!!! Gibt es eine Möglichkeit live (also ohne Verzögerung) den Input auf das CGI-Skript mitzulesen?
Andere Idee?
Code: Alles auswählen
def writeStatus(fsize):
fileHandle = open ( 'status/test.txt', 'w' )
fileHandle.write ( str(fsize) )
fileHandle.close()
f = open('files/tmp.tmp', 'w+')
while True:
data = sys.stdin.read(1024*16) # read 64k at a time
#print data
if not data: break
# status ueber den upload
#print f.tell()
writeStatus(f.tell())
f.write(data)
#f.flush() # so the ajax poller gets an accurate reading
time.sleep(0.35)
#f.seek(0)
f.close()
Bei dem Code wird die Datei geschrieben, während der Browser lädt. Geht also soweit schonmal. Die Frage ist jetzt aber, wie ich zeitgleich die Daten aus dem Skript ausbekomme, so dass ich Sie live auslesen kann. Das mit der test.txt als Statusdatei scheint mir noch nicht die optimale Lösung zu sein, weil ich mit einem zweiten Script diese Datei ausgeben müsste, die aber zu lange lädt, bis die erste Ausgabe kommt.
EDIT: ok geht defintiv nicht!!! Gibt es eine Möglichkeit live (also ohne Verzögerung) den Input auf das CGI-Skript mitzulesen?
Andere Idee?