web-dev-qa-db-fra.com

Safari <input type = "file" accept = "video / *"> ignore les fichiers mp4

J'utilise une entrée de fichier HTML comme celle-ci:

<input type="file" accept="video/*"> 

pour permettre à mes utilisateurs de télécharger des vidéos sur mon site. Cela fonctionne comme prévu dans tous les navigateurs modernes (permettant uniquement à l'utilisateur de sélectionner des fichiers vidéo) sauf Safari.

D'après ce que je peux dire, Safari semble interpréter le accept="video/*" attribut comme accept="*.mov" en ignorant la plupart, sinon la totalité, des autres formats/extensions vidéo (webm, m4v, etc.).

Des suggestions sur la façon d'obtenir la boîte de dialogue de sélection pour autoriser uniquement les types de fichiers vidéo courants (et pas seulement les .mov) dans Safari?

44
cdanzig

J'ai trouvé que la chaîne d'acceptation suivante ajoutera mp4 et m4v à la liste des types de fichiers acceptés par safari:

accept="video/mp4,video/x-m4v,video/*"

Je ne sais pas quel est le type mime pour les vidéos webm mais si vous pouvez le rechercher, vous devriez pouvoir le coller à la chaîne d'acceptation. L'astuce consiste à spécifier le type MIME, le simple fait d'utiliser une extension de fichier ne fonctionnera pas.

69
sbennett

Vous pouvez jeter un œil au code source du kit Web ~/Source/WebCore/platform/MIMETypeRegistry.cpp .

Ces types sont personnalisés par Apple pour Safari, et peuvent ne pas fonctionner sur d'autres navigateurs.

8
Alan Dong