установка типа контента в java для загрузки файла - PullRequest
10 голосов
/ 11 февраля 2010

В моем приложении я хотел бы предоставить возможность загрузки файлов. Я установил типы файлов в response.setContentType. Как я могу установить типы контента для почти всех известных типов файлов? Есть ли простой способ? или мне нужно установить его вручную, как я делаю сейчас, что указано ниже.

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

Спасибо:)

Ответы [ 3 ]

10 голосов
/ 11 февраля 2010

Взгляните на javax.activation.MimetypesFileTypeMap (поставляется как часть Java6, его можно загрузить для предыдущей версии). У него есть метод, который возвращает тип MIME для данного имени файла.

Я никогда не пробовал использовать его сам, хотя, возможно, вам все равно потребуется предоставить список типов пантомимы. Хотя стоит посмотреть.

1 голос
/ 05 июня 2015

Чтобы привести рабочий пример того, что @skaffman перечислил при использовании сервлета:

        String fileName = "c:/temp/URL.txt";
        MimetypesFileTypeMap mimetypesFileTypeMap=new MimetypesFileTypeMap();
        response.setContentType(mimetypesFileTypeMap.getContentType(fileName));
        response.getOutputStream().write(Files.readAllBytes(Paths.get(fileName)));
0 голосов
/ 28 января 2013

URLConnection.getFileNameMap().getContentTypeFor(string) работает для txt, pdf, avi; не удается для doc, odt, mp3 ...

...