Sie haben zwei Möglichkeiten. Wenn Ihr Glück hat, kann der Client den MIME-Typ der Datei bestimmen und er kann in den Formular-Post eingefügt werden. Normalerweise ist dies der Wert eines Eingabeelements, dessen Name "Dateityp" oder etwas Ähnliches ist.
Andernfalls können Sie den Mimetyp aus der Dateierweiterung auf dem Server erraten. Dies hängt etwas davon ab, wie aktuell das Modul mimetypes ist. Beachten Sie, dass Sie Typen oder Überschreibungstypen im Modul hinzufügen können. Dann verwenden Sie die Funktion "guess_type", die den Mimetyp aus der Dateinamenerweiterung interpretiert.
import mimetypes
mimetypes.add_type('video/webm','.webm')
...
mimetypes.guess_type(filename)
UPDATE: Wenn ich mich richtig erinnere, können Sie die Client-Interpretation des MIME-Typs aus den "Content-Type" Header erhalten. In den meisten Fällen ist dies ein "Application/Octet-Stream", der fast nutzlos ist.
Wenn Sie also das cgi-Modul verwenden und Dateien mit dem üblichen mehrteiligen Formular hochladen, wird der Browser den MIME-Typ für Sie erraten. Es scheint einen guten Job zu machen und wird an den Parameter form.type übergeben. So können Sie etwas tun:
import cgi
form = cgi.FieldStorage()
files_types = {};
if form.type == 'multipart/form-data':
for part in form.keys():
files_types[form[part].filename] = form[part].type
else:
files_types[form.filename] = form.type
Welchen Dateityp? –
Einige Bilder für jetzt, http: //adderess/image.jpg. Aber wenn ich verstehe "Mime-Typ" ist Teil der Header, die die Web-Browser sendet, oder? Wie lese ich diese Header? –