Vous avez deux options. Si vous êtes chanceux, le client peut déterminer le type MIME du fichier et il peut être inclus dans la publication du formulaire. Habituellement, c'est avec la valeur de l'élément d'entrée dont le nom est "filetype" ou quelque chose de similaire.
Sinon, vous pouvez deviner le type MIME à partir de l'extension de fichier sur le serveur. Cela dépend en quelque sorte de la mise à jour du module mimetypes. Notez que vous pouvez ajouter des types ou remplacer des types dans le module. Ensuite, vous utilisez la fonction "guess_type" qui interprète le type mime à partir de l'extension du nom de fichier.
import mimetypes
mimetypes.add_type('video/webm','.webm')
...
mimetypes.guess_type(filename)
MISE À JOUR: Si je me souviens bien, vous pouvez obtenir l'interprétation du client du mimetype de l'en-tête « Content-Type ». La plupart du temps, cela se révèle être 'application/octet-stream', ce qui est presque inutile.
Donc, en supposant que vous utilisiez le module cgi, et que vous téléchargiez des fichiers avec la forme multipart habituelle, le navigateur va deviner le type MIME pour vous. Il semble faire un travail décent, et il est passé au paramètre form.type. Ainsi, vous pouvez faire quelque chose comme ceci:
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
De quel type de fichier? –
Quelques images pour l'instant, http: //adderess/image.jpg. Mais si je comprends bien, «mime-type» fait partie des en-têtes que les navigateurs Web envoient, n'est-ce pas? Alors, comment puis-je lire ces en-têtes? –