pl: multipart/form-data

Beitrag lesen

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.

Boundary ist einfach nur technisches Englisch für Trennsequenz. Die wird per Definition so gewählt, dass sie nicht in den Nutzdaten vorkommt.

Es gibt noch eine Trennsequenz bei desem Enctype, das ist die Leerzeile CRLFCRLF. Und die Wahrscheinlichkeit, dass CRLFCRLF in beliebigen Binaries (auch Textdateien sind Binaries) vorkommen kann, ist sehr groß.

Idealerweise, würde es für jeden Part eine Content-Length Angabe geben, gäbe es überhaupt keine Kollisionen und der Parser wäre deutlich performanter, weil das byteweise Lesen durch blockweise Lesen ersetzt werden kann. pl

PS: Noch besser wäre eine binäre Serialisierung, mit modernen Browsern ist das möglich. Da wird nur noch mit Längenangaben operiert, aber wie gesagt: ArrayBuffer-Geraffel ;)