hallo nochmal,
Wie schon in meinem ersten Posting erwähnt, mischst du lexikalische und syntaktische Analyse miteinander. Dazu kann ich dir nur den selben Rat wieder erteilen: Benutze einen Tokenizer als vorbereitende Maßnahme für den Parser.
Tokenizer und Binärsequenzen, bring das besser nicht zusammen. Dass bei diesem Enctype ein Token (boundary_string) überhaupt funktioniert, begründet sich damit, dass die Wahrscheinlichkeit einer Kollision sehr gering ist.
Trotz dieser geringen Wahrscheinlichkeit würde ich auch einen Enctype multipart/form-data wie andere Binärsequenzen grundsätzlich immer sequentiell parsen.
Der von mir beschriebene Algorithmus funktioniert in FF, mit dem JS-FormData-Objekt (Ajax) und IE ausgezeichnet und ist plattformunabhängig. Mit Win32 und x86_64-linux am Server hab ich den getestet mit Perl und bei dieser Gelegenheit eine erstklassige Parser-Klasse für diesen Enctype erstellt. Multiple File-Upload Demo und Download des Perl-Moduls auf einer meiner Seiten...
Abwärtskompatibel bis Perl v5.6.1 verzichtet mein Parser auf temporäre Dateien und bietet gegenüber CGI.pm so einige Vorteile, insbesondere eine einfachere Handhabung.
Oh mann, jetzt ist mir dieser Form-Data-Schrott auch noch ans Herz gewachsen ;)
Aber so umständlich, wie das ganze File-API, ArrayBuffer und Blob-Geraffel derzeit in modernen Browsern implementiert ist, bleib ich wahrscheinlich doch erstmal lieber bei FormData. pl