Rolf B: Baustellen im Wiki: Datei Upload

Beitrag lesen

problematische Seite

Hallo,

TIL: <input type="file"> kennt ein accept-Attribut, in dem man File-Extensions und MIME-Typen hinterlegen kann, die der User auswählen darf.

Und wie sich herausstellt: hic sunt dracones!

Der Vergleich HTML/Attribute/accept mit der HTML Spec ergab: Die Begriffe "Medientyp" und "MIME-Typ" sind verknäuelt. Selbst die IANA dreht dieses Rad, sie schreiben in der MIME-Typregistry von „Media Type, formerly known as MIME Type“.

Damit gibt es keine vernünftige begriffliche Unterscheidung zwischen "audio", "audio/*" und "audio/mp3". "audio" ist in meinem Wortschatz ein MIME-Typ. "mp3" ist ein MIME Subtyp für audio. "audio/*" ist eine Sammelangabe für "Alle Audiodateien". Und "audio/mp3" ist eigentlich ein Medientyp, bestehend aus MIME-Typ und MIME-Subtyp. Wenn die IANA nun sagt, dass MIME-Typen jetzt Medientypen heißen, dann bekommt meine Tischkante neue Bissspuren…

Die HTML Spec macht es auch nicht besser: „Ein gültiger MIME type string ist ein String, auf den die media-type Produktion in RFC7231 passt.“ Diese Produktion enthält Typ, Subtyp und optionale Parameter…

Wir können das durch Begriffsfindung nicht lösen (damit sind wir schon bei den Stilelementen gescheitert…) und auf der Wiki-Seite für's accept-Attribut helfen dann nur klare Beispiele.

Das accept-Attribut erwartet aber keine Medientypen, sondern Dateitypen. Das ist wieder etwas anderes. Eine Dateitypangabe kann ein Medientyp sein, es kann aber auch einfach eine File Extension sein wie ".docx". Und es gibt die Sammelangaben wie "audio/*".

Bei diesen Sammelangaben spuckt dann wieder einer Feuer. Die HTML Spec sagt, dass als MIME-Typ Sammelangaben lediglich "audio/*", "video/*" und "image/*" zulässig seien. Von "text/*" ist keine Rede. Aber genau das verwenden wir im Wiki als Beispiel, und es funktioniert auch noch. Ob in jedem Browser und in jedem Betriebssystem, ist natürlich eine gute Frage. Betriebssysteme müssen für ihre Dateien einen Medientyp kennen, entweder indem sie ihn im Directory speichern oder - wie Windoof - indem sie ihn via Verzeichns aus der File Extension herleiten.

Wie erklär ich das nur meiner Oma?

Rolf

--
sumpsi - posui - obstruxi