Lorsque les navigateurs envoyer application/octet-stream en tant que Type de Contenu?
Je suis l'élaboration d'un upload de fichier avec JSF. L'application enregistre les trois dates sur le fichier:
- Nom de fichier
- Octets
- Type de contenu tel que soumis par le navigateur.
Mon problème est que certains fichiers sont enregistrés avec un type de contenu = application/octet-stream
même si elles sont *.doc
fichiers oder *.pdf
.
Quand le navigateur fait un type de contenu?
Je voudrais nettoyer la base de données donc j'ai besoin de savoir quand le navigateur d'informations sont incorrectes.
Hmm ... je ne peux pas faire de Firefox utilisation d'un mauvais type MIME même si je le rate mon système de mime.types de fichier, donc je ne suis pas sûr de ce que les navigateurs peut-être de passer d'un type de Contenu d'en-tête.
Malheureusement, il y a de plus en plus de navigateurs dans le monde que seuls les FF. Par exemple celui développé par (contre la toux) une équipe de Redmond.
Oui, bien sûr - bizarrement, je m'attends à-dire à obtenir le type MIME de mal, mais pas de cette façon. (Je m'attends à fournir "application/pdf" pour un JPEG est un fichier dont le nom est arrivé d'être "bidon.pdf", par exemple.)
Oh, et dans le fichier de téléchargement cas, je suis récemment familier avec (mon propre application), je ne porte aucune attention à cela et utiliser un serveur-côté d'un sniffer (Image Magick, dans ce cas) pour déterminer le type de fichier.
double possible de Comment est le type mime d'un fichier téléchargé déterminé par le navigateur?
Malheureusement, il y a de plus en plus de navigateurs dans le monde que seuls les FF. Par exemple celui développé par (contre la toux) une équipe de Redmond.
Oui, bien sûr - bizarrement, je m'attends à-dire à obtenir le type MIME de mal, mais pas de cette façon. (Je m'attends à fournir "application/pdf" pour un JPEG est un fichier dont le nom est arrivé d'être "bidon.pdf", par exemple.)
Oh, et dans le fichier de téléchargement cas, je suis récemment familier avec (mon propre application), je ne porte aucune attention à cela et utiliser un serveur-côté d'un sniffer (Image Magick, dans ce cas) pour déterminer le type de fichier.
double possible de Comment est le type mime d'un fichier téléchargé déterminé par le navigateur?
OriginalL'auteur guerda | 2010-03-11
Vous devez vous connecter pour publier un commentaire.
Ignorer la valeur envoyée par le navigateur. C'est en effet dépendante de la plate-forme du client, le navigateur et la configuration utilisée.
Si vous voulez le plein contrôle sur les types de contenu basé sur l'extension de fichier, puis de mieux déterminer vous-même en utilisant
ServletContext#getMimeType()
.La valeur par défaut des types mime sont réglés dans le
web.xml
de la servletcontainer en question. Par exemple, dans Tomcat, il est situé dans/conf/web.xml
. Vous pouvez étendre/remplacer dans la webapp est/WEB-INF/web.xml
comme suit:Vous pouvez également déterminer le type mime, sur la base du contenu du fichier (car l'extension de fichier ne peut pas en soi être précis, il peut être trompé par le client), mais c'est beaucoup de travail. Envisager l'utilisation d'un 3ème partie de la bibliothèque à faire tout le travail. J'ai trouvé JMimeMagic utile pour cela. Vous pouvez l'utiliser comme suit:
Noter qu'il ne prend pas en charge tous mimetypes comme fiable. Vous pouvez également envisager une combinaison des deux approches. E. g. si l'on retourne la valeur null ou
application/octet-stream
, utilisez les autres. Ou si les deux renvoie un autre, mais "valide" mimetype, préférez celui retourné par JMimeMagic.Oh, j'ai presque oublié d'ajouter, dans le JSF, vous pouvez obtenir le
ServletContext
comme suit:Ou si vous arrive d'utiliser JSF 2.x, utilisez
ExternalContext#getMimeType()
à la place.OriginalL'auteur BalusC
Cela dépend du système d'exploitation, le navigateur, et la façon dont l'utilisateur a configuré. Il est basé sur la manière dont le navigateur détermine le type de fichier des fichiers locaux (pour les afficher). Sur la plupart des OS/navigateur combinaisons ceci est basé sur l'extension de fichier, mais sur certains, il peut être déterminé par d'autres moyens. (par exemple: sur Mac OS)
En ay cas, il ne faut pas vraiment compter sur le type de Contenu envoyé par le navigateur. La meilleure approche serait de vraiment regarder le contenu du fichier. Vous pourriez probablement aussi utiliser le nom de fichier, mais gardez à l'esprit que les navigateurs ne sont pas nécessairement une bonne idée d'en parler à vous que ce soit (même si c'est probablement encore un beaucoup plus fiable que le type de Contenu qu'ils envoient).
OriginalL'auteur Laurence Gonsalves