Ich möchte einen serverseitigen Metadaten-Extraktor implementieren, bei dem der User Dateien hochlädt und die entsprechenden Metadaten angezeigt bekommt.
Da Metadaten üblicherweise im Fileheader stehen, würde es reichen, nur die ersten x Kbytes einer Datei hochzuladen, dann den Upload abzubrechen und die Auswertung zu beginnen.
Wie kann ich einen solchen partiellen Upload implementieren?
Partieller HTTP File Upload
-
- User
- Beiträge: 996
- Registriert: Mittwoch 9. Januar 2008, 13:48
Das geht bestimmt mit Java-Applets *duck*
- veers
- User
- Beiträge: 1219
- Registriert: Mittwoch 28. Februar 2007, 20:01
- Wohnort: Zürich (CH)
- Kontaktdaten:
Nö tut er nicht. Sobald der Socket geschlossen wurde wird auch der Browser aufhören zu senden - wohin auch. Wenn du das in ein unsichtbares iframe lenkst könnte es funktionierenjens hat geschrieben:Interessante Frage. Ich weiß nicht genau, aber IMHO geht das mit normalen http nicht. Der Browser sendet und sendet, bis alles da ist, auch wenn der Server schon längst "abgebrochen" hat.

[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
-
- User
- Beiträge: 29
- Registriert: Donnerstag 7. September 2006, 21:30
Danke für Euer Feedback. Ich habe schon ein paar Java-Uploader getestet, aber out of the box beherrschte keiner mein gewünschtes Feature. Zudem ist die JRE-Installationsbasis nicht so groß.
@veers: kannst du mir auch ein paar Tipps zur Umsetzung der Server-Komponente geben?
@veers: kannst du mir auch ein paar Tipps zur Umsetzung der Server-Komponente geben?
- veers
- User
- Beiträge: 1219
- Registriert: Mittwoch 28. Februar 2007, 20:01
- Wohnort: Zürich (CH)
- Kontaktdaten:
Mit einem CGI würde das etwa so laufen:
Die ersten N bytes von stdin lesen
Die Datenverarbeiten, Resultat in Session speichern
exit(0)
Das Problem:
Je nach dem brauchst du für die Metadaten auch das Ende der Datei (bei gewissen formen von id3 zum Beispiel).

Die ersten N bytes von stdin lesen
Die Datenverarbeiten, Resultat in Session speichern
exit(0)
Das Problem:
Je nach dem brauchst du für die Metadaten auch das Ende der Datei (bei gewissen formen von id3 zum Beispiel).

[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
-
- User
- Beiträge: 1790
- Registriert: Donnerstag 28. Oktober 2004, 16:33
- Wohnort: Graz, Steiermark - Österreich
- Kontaktdaten:
wsgi definiert nicht wirklich was du mit dem input stream machen darfst, aber schließen darfst du den glaub ich nicht. Webbrowser reagieren auch eher mit fehlern auf sowas.
TUFKAB – the user formerly known as blackbird
- veers
- User
- Beiträge: 1219
- Registriert: Mittwoch 28. Februar 2007, 20:01
- Wohnort: Zürich (CH)
- Kontaktdaten:
Machen sie, aber die sind im unsichtbaren IFrame ja nicht sichtbar.mitsuhiko hat geschrieben:wsgi definiert nicht wirklich was du mit dem input stream machen darfst, aber schließen darfst du den glaub ich nicht. Webbrowser reagieren auch eher mit fehlern auf sowas.
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Ich würde sagen, dass man als Server alles einlesen (aber nicht speichern) muss, wenn es auf dem Client nicht zu Fehlern kommen soll. Ein signiertes (!) Java-Applet könnte eine lokale Datei direkt im Browser einlesen und dabei bereits die Logik implementieren, die da im Server sein soll und so den ganzen Upload einsparen. Eine weitere Alternative wäre eine Flash-Anwendung, die nicht extra signiert werden muss, aber auch auf Dateien zugreifen darf, die der Anwender ihr per File-Open-Dialog zeigt. Ich meine, dann kann man diese Datei in ein ByteArray-Objekt einlesen und verarbeiten, ebenfalls wieder ohne die Notwendigkeit, alles hochzuladen.
Stefan
Stefan
-
- User
- Beiträge: 29
- Registriert: Donnerstag 7. September 2006, 21:30
Ich habe eine ganze Weile versucht, das ganze über Java-Applets bzw. Flash-Uploader zu lösen. In Flash wird sowas erst mit dem Flash Player 10 möglich sein, und selbst da ist es nicht ganz sicher ob nicht sicherheitstechnisch ein Riegel vorgeschoben wird.
Momentan müht sich ja das z.B. SWFUpload-Team ziemlich ab, mit den ganzen Sicherheitseinschränkungen des Flash Player 10 fertig zu werden. Java ist bei weitem nicht so verbreitet und es gibt noch kein Applet, das partielle Uploads out-of-the box beherrscht.
Nachdem das Thema auf reges Interesse stösst, würde ich mich über Codeschnipsel zu einer reinen HTML-Lösung (FORM im hidden iFrame) sehr freuen.
Das Upload-Skript von Werkzeug wäre ja eine gute Ausgangsbasis:
http://dev.pocoo.org/projects/werkzeug/ ... /upload.py
Momentan müht sich ja das z.B. SWFUpload-Team ziemlich ab, mit den ganzen Sicherheitseinschränkungen des Flash Player 10 fertig zu werden. Java ist bei weitem nicht so verbreitet und es gibt noch kein Applet, das partielle Uploads out-of-the box beherrscht.
Nachdem das Thema auf reges Interesse stösst, würde ich mich über Codeschnipsel zu einer reinen HTML-Lösung (FORM im hidden iFrame) sehr freuen.
Das Upload-Skript von Werkzeug wäre ja eine gute Ausgangsbasis:
http://dev.pocoo.org/projects/werkzeug/ ... /upload.py