Dans ma demande, j'aime fournir une installation de téléchargement de fichier. J'ai défini les types de fichiers sur intervention.setContentType code>. Comment puis-je définir les types de contenu pour presque tous les types de fichiers connus? Y a-t-il un moyen facile? ou j'ai besoin de la définir manuellement comme je le fais maintenant, ce qui est donné ci-dessous. if (pictureName.indexOf("jpg") > 0) {
res.setContentType("image/jpg");
} else if (pictureName.indexOf("gif") > 0) {
res.setContentType("image/gif");
} else if (pictureName.indexOf("pdf") > 0) {
res.setContentType("application/pdf");
res.setHeader("Content-Disposition", "inline; filename=\"" + pictureName + "\"");
} else if (pictureName.indexOf("html") > 0) {
res.setContentType("text/html");
} else if (pictureName.indexOf("zip") > 0) {
res.setContentType("application/zip");
res.setHeader("Content-Disposition", "attachment; filename=\"" + pictureName + "\"");
}
4 Réponses :
Testé sur mon Mac OS X 10.5.8, Java 1.6.0_17, Nouveau MimetypeSfileTypeMap (). GetContentType (FileName) produit ces résultats: x.jpg image / jpeg, x.jpeg image / jpeg, x.gif image / gif, x applications .pdf / octet-flux, x.html texte / html, application x.zip / octet-flux. [ACK, mauvais formatage en tant que commentaire. Devrais-je poster cela comme une réponse distincte, ou une personne qui peut éditer le mettre dans celui-ci?]
@Kevin: Je ne suis pas sûr, soutiens-tu ma réponse ou en désaccord avec ça? :)
Essayer de fournir des données sur la qualité de cette solution fonctionne. Pas d'opinion, vraiment.
urlconnection.getfilenamemap (). getContentTypefor (string) code> fonctionne pour txt, pdf, avi; échoue pour DOC, ODT, MP3 ... P>
Pour donner un exemple de travail de ce que @skaffman répertorié lors de l'utilisation d'un servlet:
Une classe FileSeDeTector a été ajoutée dans Java 1.7 permettant de rechercher un fichier de deviner son type.
Spécifiquement, vous pouvez utiliser Files.ProbecontentType . Quelques informations ici . Et voici un échantillon de code: p> par les docs, probecontenttype est hautement spécifique de la mise en œuvre em>
et peut simplement examiner le nom du fichier, il peut utiliser un attribut de fichier, ou il peut examiner les octets dans le fichier em>. p> comme Skaffman répondit, il y a aussi
Votre conteneur (par exemple, TOMCAT) fournit généralement cette logique, par exemple développeurshome.com/wap / wapserverSetup / ... - souhaitez-vous remplacer cela?
Off-sujets: Ce code est un peu fragile, n'est-ce pas? Et si
picturename code> est "gifford.pdf"?Ok Crowder ... J'ai supprimé l'aide s'il vous plaît :) ... PictureName est le nom de fichier à afficher sur la fenêtre de téléchargement.
Ce qu'il dit, c'est que vous allez correspondre au mauvais cas si une extension différente est une sous-chaîne du nom de fichier. Utilisez
string.endswith () code> à la place.gifford.pdf code> serait traité bien car il se compare à tort avec> 0 code> non> = 0 code>._gifford.pdf code> d'autre part ...