java web项目文件上传中常见的mime类型/文件类型校验、验证/只允许特定类型的文件(基于Apache的tika)

摘要:
“.contat(allowExtension);}}”

java代码

  final Tika tika = new Tika();

    Set<String> allowMimeTypeAll =
            ImmutableSet.of("image/pjpeg", "application/pdf", "application/msword", "image/jpeg",
                    "image/x-png", "image/tiff", "application/vnd.ms-excel", "application/zip",
                    "image/bmp", "image/x-bitmap", "image/x-pixmap", "image/jpg",
                    "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" /*xlsx*/
                    , "application/x-rar-compressed", "application/rtf", "application/x-tika-ooxml",/*xls*/
                    "application/vnd.openxmlformats-officedocument.spreadsheetml.template",/*xltx*/
                    "application/vnd.ms-spreadsheetml",/*excel*/"application/vnd.ms-xpsdocument",/*xps*/
                    "application/x-bplist"/*pdf*/, "application/x-mswrite",/*Ms Write*/
                    "application/vnd.ms-word.document.macroenabled.12"/*docm*/, "application/x-tika-msoffice"/*pdf*/,
                    "application/vnd.openxmlformats-officedocument.wordprocessingml.document", /*docx*/
                    "application/vnd.openxmlformats-officedocument.wordprocessingml.template", /*dotx*/
                    "application/vnd.ms-powerpoint",/*ppt*/"vnd.ms-project",/*Microsoft Project*/
                    "application/vnd.visio"/*Visio*/, "image/svg+xml",/*svg*/"application/vnd.ms-works",/*wps*/
                    "application/vnd.openxmlformats-officedocument.presentationml.slideshow",/*ppsx*/
                    "application/vnd.openxmlformats-officedocument.presentationml.presentation"/*pptx*/,
                    "application/vnd.openxmlformats-officedocument.presentationml.template"
                    , "application/x-7z-compressed", "application/vnd.ms-xpsdocument"/*xps*/);

    Set<String> allowMimeType = ImmutableSet.of("application/pdf", "application/x-bplist"/*pdf*/, "application/x-tika-msoffice"/*pdf*/);

    //final String allowExtensionAll ="目前支持的文件类型:pdf,zip,rar,7z,bmp,jpeg,jpg,png,tiff,svg;WPS,Excel,PPT,Microsoft Project,Visio,Word,RTF类型文件。";
    final String allowExtension = "目前仅支持PDF文件类型附件";

校验代码

   @RequestMapping(value = "start", method = RequestMethod.POST)
    @ResponseBody
    public String start(@Valid Project project, @RequestParam("prjInfoFile") MultipartFile prjInfoFile,
                        @RequestParam("prjDesignFile") MultipartFile prjDesignFile, @RequestParam("prjFinanceFile") MultipartFile prjFinanceFile,
                        @RequestParam("files") MultipartFile[] files, Model model) throws IOException {
 byte[] byteInfoFile = prjInfoFile.getBytes();

        if (byteInfoFile.length > 0) {

            String filename = prjInfoFile.getOriginalFilename().toLowerCase();

            String mimeType = tika.detect(byteInfoFile);

            log.info("文件类型:{}", mimeType);

            if (!(allowMimeType.contains(mimeType) || filename.endsWith(".pdf"))) {
                return "error:【项目情况表】服务器暂不接受此类型的附件。".concat(allowExtension);
            }
        }
}

免责声明:文章转载自《java web项目文件上传中常见的mime类型/文件类型校验、验证/只允许特定类型的文件(基于Apache的tika)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Mac下的Mysql无法登陆的问题Zabbix之配置文件详解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Maven-pom.xml详解

(看的比较累,可以直接看最后面有针对整个pom.xml的注解) pom的作用   pom作为项目对象模型。通过xml表示maven项目,使用pom.xml来实现。主要描述了项目:包括配置文件;开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以及其他所有的项目相关因素。 先看一个简单的pom.xml <proje...

你不知道的 Blob

来自公众号:全栈修仙之路 如果你允许用户从你的网站上下载某些文件,那你可能会遇到 Blob 类型。为了实现上述的功能,你可以很容易从网上找到相关的示例,并根据实际需求进行适当的调整。对于部分开发者来说,在完成上述功能之后,他们并不会继续思考 Blob 是什么? 这就导致了一些开发者,还是停留在熟练使用 API 的层面,当遇到比较棘手的问题时,就束手无策...

input="file" 浏览时只显示指定excel文件,筛选特定文件类型

<p>显示 .xls, .xlsx, .csv 文件...</p> <input type="file" accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" runa...

IIS 之 添加MIME扩展类型及常用的MIME类型列表

  经常用IIS作为下载服务器的时候有时传上去的文件比如 example.mp4 文件名上传后,但是用http打开的时候确显示为 404 文件不存在。其实是IIS对文件的一种保护,不在IIS指定的MIME类型里的文件不会被操作。   常见的有 mp4 / flv / iso / 7z / apk 等扩展名的文件, iis 本身是没有指定MIME类型的,这类...

【转】Maven pom.xml 配置详解

  原文链接:https://yq.aliyun.com/articles/38271   pom.xml文件配置详解 --声明规范 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:s...

vim中文件类型识别、语法高亮及缩进实现流程

一、文件类型在使用vim编辑一个文件的时候,如果能够识别出文件的类型,加上对应的高亮规则,可以使文件的查看更加醒目,这个功能几乎是使用vim浏览文件的一个核心诉求。另外,在进行文件编辑的时候,特别是使用vim写代码的时候(典型的场景是通过vim写C/C++代码),如果能够智能缩进,还可以减少敲代码。例如,在每行的开头自动添加缩进与前一行对齐;或者是当在输入...