Ich denke aber nicht, dass hier ein Blob nötig ist.
Doch, genau das ist. Wenn nämlich nicht, hast Du #3 heißt: Kein Upload, weil Parameter filename gar nicht gestzt wird.
Ich rede davon, entweder #1 zu verwenden (File-Objekt übergeben) oder besser gar nicht manuell append() aufzurufen.
oli69 hat bereits ein <input type="file">. Siehe Ausgangsposting. Es muss einfach das ganze Formular abgeschickt werden. Das geht ohne append, einfach mit new FormData(form).
Beispiel: http://codepen.io/molily/pen/vACKq?editors=101
Das Formular wird mit JavaScript genauso abgesendet wie ohne JavaScript, der Request ist der gleiche. (Getestet in Chrome.)
Das ist doch viel einfacher, als das File
des <input type="file"> zu lesen, den Inhalt mit einem FileReader
zu lesen, in einen Blob
zu verpacken und an das FormData
zu hängen.
Mathias