11
votes

Définition de type de contenu en Java pour le téléchargement de fichier

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 + "\"");
}


5 commentaires

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 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 () à la place.


gifford.pdf serait traité bien car il se compare à tort avec > 0 non > = 0 . _gifford.pdf d'autre part ...


4 Réponses :



0
votes

urlconnection.getfilenamemap (). getContentTypefor (string) fonctionne pour txt, pdf, avi; échoue pour DOC, ODT, MP3 ...


0 commentaires

3
votes

Pour donner un exemple de travail de ce que @skaffman répertorié lors de l'utilisation d'un servlet: xxx


0 commentaires

1
votes

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: xxx

par les docs, probecontenttype est hautement spécifique de la mise en œuvre et peut simplement examiner le nom du fichier, il peut utiliser un attribut de fichier, ou il peut examiner les octets dans le fichier .

comme Skaffman répondit, il y a aussi MIMETYTYPESFileTypeMap , qui en comparaison fournit la saisie des données via leur extension de fichier .


0 commentaires