springmvc实现文件上传功能

复制代码
第一:
@RequestMapping("/testUp")
public String testUp(MultipartFile photo, HttpSession session) throws IOException {
    //获取上传的文件的文件名
    String fileName = photo.getOriginalFilename();
    //获取上传的文件的后缀名
    String suffixName = fileName.substring(fileName.lastIndexOf("."));
    //将UUID作为文件名
    String uuid = UUID.randomUUID().toString().replaceAll("-","");
    //将uuid和后缀名拼接后的结果作为最终的文件名
    fileName = uuid + suffixName;
    //通过ServletContext获取服务器中photo目录的路径
    ServletContext servletContext = session.getServletContext();
    String photoPath = servletContext.getRealPath("photo");
    File file = new File(photoPath);
    //判断photoPath所对应路径是否存在
    if(!file.exists()){
        //若不存在,则创建目录
        file.mkdir();
    }
    String finalPath = photoPath + File.separator + fileName;
    //上传文件
    photo.transferTo(new File(finalPath));
    return "success";
}


@RequestMapping("/testUp") 注解指定了该方法用于处理HTTP请求,并将请求路径映射为"/testUp"。

MultipartFile photo 参数用于接收上传的文件,通过photo.getOriginalFilename()获取上传文件的文件名。

通过截取文件名的最后一个"."后的字符串,可以获取上传文件的后缀名。

使用UUID生成一个唯一的字符串,并将后缀名拼接在后面,作为最终的文件名。

通过HttpSession的getServletContext()方法获取服务器中photo目录的路径。

创建一个File对象,表示photo目录,如果目录不存在,则使用file.mkdir()方法创建目录。

将最终的文件路径拼接为photoPath + File.separator + fileName。

使用photo.transferTo(new File(finalPath))将上传的文件保存到最终路径中。

方法返回字符串"success",可能用于跳转到成功页面或其他相关操作。


这段代码实现了一个简单的文件上传功能,将上传的文件保存到服务器的photo目录中,并使用UUID生成一个唯一的文件名。通过MultipartFile对象的transferTo()方法,将上传的文件保存到最终路径中。

第二:
复制代码
<!--配置文件上传解析器,将上传的文件封装为MultipartFile-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>
  • 这段XML配置代码使用了Spring框架中的CommonsMultipartResolver类来实现文件上传解析器的配置。
  • 通过将该解析器配置为一个Spring的Bean,可以在处理请求时自动将上传的文件封装为MultipartFile对象。
  • CommonsMultipartResolver是Spring框架提供的一个常用的文件上传解析器,它基于Apache Commons FileUpload库实现了文件上传的功能。
  • 通过配置该解析器,可以方便地在Spring MVC中处理文件上传的请求。
相关推荐
Exclusive_Cat12 分钟前
SpringMVC参数接收与数据返回详解
spring·mvc
ChinaRainbowSea2 小时前
补充:问题:CORS ,前后端访问跨域问题
java·spring boot·后端·spring
hqxstudying4 小时前
java依赖注入方法
java·spring·log4j·ioc·依赖
春生野草4 小时前
关于SpringMVC的整理
spring
Bug退退退1235 小时前
RabbitMQ 高级特性之重试机制
java·分布式·spring·rabbitmq
hello早上好6 小时前
CGLIB代理核心原理
java·spring
先睡12 小时前
Redis的缓存击穿和缓存雪崩
redis·spring·缓存
Bug退退退12317 小时前
RabbitMQ 高级特性之死信队列
java·分布式·spring·rabbitmq
booooooty1 天前
基于Spring AI Alibaba的多智能体RAG应用
java·人工智能·spring·多智能体·rag·spring ai·ai alibaba
极光雨雨1 天前
Spring Bean 控制销毁顺序的方法总结
java·spring