首页 > 编程语言 >Java 中 MultipartFile 文件校验文件格式

Java 中 MultipartFile 文件校验文件格式

时间:2024-10-17 14:49:50浏览次数:6  
标签:文件 Java 校验文件 fileName file ServiceException new MultipartFile 上传

后台项目经常会有文件上传功能,如果后台不做校验会有用户上传恶意文件,可能会导致上传文件类型不符合要求或者上传恶意脚本的情况导致服务器被攻击。

public static void main(String[] args) throws InterruptedException {
        byte[] content = "Hello, World!".getBytes();
        MultipartFile file = new MockMultipartFile("file", "hello.txt", "text/plain", content);

        final HashSet<String> imageSuffix = new HashSet<>(Arrays.asList("jpg", "jpeg", "gif", "png", "webp"));
        // 文件的原始名称
        String fileName = file.getOriginalFilename();
        if (fileName == null) {
            throw new ServiceException("文件名称不能为空");
        }

        // 解析出文件后缀
        int index = fileName.lastIndexOf(".");
        if (index == -1) {
            throw new ServiceException("文件后缀不能为空");
        }

        // 验证文件后缀
        String suffix = fileName.substring(index + 1);
        if (!imageSuffix.contains(suffix.trim().toLowerCase())) {
            throw new ServiceException("非法的文件类型");
        }
    }

标签:文件,Java,校验文件,fileName,file,ServiceException,new,MultipartFile,上传
From: https://www.cnblogs.com/Linzj5950/p/18472318

相关文章

  • 终于整理完了,全网最全JAVA面试八股文总结!
    1、Java线程具有五中基本状态(1)新建状态(New):当线程对象对创建后,即进入了新建状态,如:Threadt=newMyThread();(2)就绪状态(Runnable):当调用线程对象的start()方法(t.start();),线程即进入就绪状态。处于就绪状态的线程,只是说明此线程已经做好了准备,随时等待CPU调度执行,并不是......
  • 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-2-环境准备与搭建-基于Maven(详细
    1.简介上一篇宏哥已经讲解和分享了如何通过引入jar包来搭建Java+Playwright自动化测试环境,这一种是比较老的方法,说白了就是过时的老古董,但是我们必须了解和知道,其实maven搭建无非也就是下载引入相关的jar包,只不过相比之下是简单方便了,了解其本质可以帮助我们更好的学习maven搭建......
  • java毕业设计-基于Springboot的小型企业客户关系管理系统【代码+论文+PPT】
    全文内容包括:1、采用技术;2、系统功能;3、系统截图;4、部分代码;5、配套内容。索取方式见文末微信号,欢迎关注收藏!一、采用技术语言:Java1.8框架:Springboot数据库:MySQL5.7、8.0开发工具:IntelliJIDEA旗舰版其他:Maven3.8以上二、系统功能产品管理:集中维护产品信息,包括添加、......
  • 构建高效在线考试平台:Spring Boot与JavaWeb的融合
    1系统概述1.1研究背景随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理基于JavaWeb技术的在线考试系统设计与实现的相关信息成为必然。开发合适的基于JavaWeb技术......
  • Spring Boot驱动的在线考试系统:JavaWeb技术实战
    1系统概述1.1研究背景随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理基于JavaWeb技术的在线考试系统设计与实现的相关信息成为必然。开发合适的基于JavaWeb技术......
  • Java 虚拟机实战(基础篇 1万字)
    此笔记来自于黑马程序员基础篇初识JVM(JavaVirtualMachine)什么是JVMJVM本质上是一个运行在计算机上的程序,他的职责是运行Java字节码文件JVM的功能翻译成字节码即时编译Java语言如果不做任何优化,性能不如C、C++等语言。Java支持跨平台特性JVM提......
  • 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-2-环境准备与搭建-基于Maven(详细
    1.简介上一篇宏哥已经讲解和分享了如何通过引入jar包来搭建Java+Playwright自动化测试环境,这一种是比较老的方法,说白了就是过时的老古董,但是我们必须了解和知道,其实maven搭建无非也就是下载引入相关的jar包,只不过相比之下是简单方便了,了解其本质可以帮助我们更好的学习maven搭建......
  • 高级java每日一道面试题-2024年10月17日-Web篇-常见的web攻击有哪些?
    如果有遗漏,评论区告诉我进行补充面试官:常见的web攻击有哪些?我回答:常见的Web攻击种类繁多,攻击者利用各种漏洞和技术手段来入侵网站、窃取数据或破坏服务。以下是一些最常见的Web攻击类型及其简要说明:1.SQL注入(SQLInjection,SQLi)描述:攻击者通过在输入字段......
  • Java 8 的 Lambda、函数式接口、Stream 用法和原理
    我是风筝,公众号「古时的风筝」。一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农!文章会收录在JavaNewBee中,更有Java后端知识图谱,从小白到大牛要走的路都在里面。公众号回复『666』获取高清大图。就在今年Java25周岁了,可能比在座的各位中的一些......
  • 在调试网页 JavaScript 脚本时,遇到 Error: Incorrect contents fetched, please reloa
    在调试网页JavaScript脚本时,遇到Error:Incorrectcontentsfetched,pleasereload这样的错误,通常表明网页内容的获取过程出现了问题。这种错误一般与页面加载、缓存管理、网络请求、脚本执行顺序等因素密切相关。为了更详细地分析问题,处理并解决这一错误,下面将从多个......