当前位置: 首页 > news >正文

springboot上传文件

上传文件

​ 上传文件大家首先想到的就是 Apache Commons FileUpload,这个库使用非常广泛。Spring Boot3 版本中已经不能使用了。代替他的是 Spring Boot 中自己的文件上传实现。Spring Boot 上传文件现在变得非常简单。提供了封装好的处理上传文件的接口 MultipartResolver,用于解析上传文件的请求,他的内部实现类 StandardServletMultipartResolver。之前常用的 CommonsMultipartResolver 不可用了。CommonsMultipartResolver 是使用 Apache Commons FileUpload 库时的处理类。StandardServletMultipartResolver 内部封装了读取 POST 其中体的请求数据,也就是文件内容。我们现在只需要在 Controller 的方法加入形参@RequestParam MultipartFile。 MultipartFile 表示上传的文件,提供了方便的方法

保存文件到磁盘

image-20250526010001336

  • 创建项目、依赖关系

image-20250525234805224

  • 设置前端页面
    • 均为静态资源,直接在 static 目录建立

image-20250526010139903

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>上传文件</title>
</head>
<body>
<h1>上传文件</h1>
<!--<form> 标签作用:定义一个表单,表单是HTML中用于收集用户输入的元素集合,可以包含各种输入框、按钮等控件。oadFile路径对应的处理程序。enctype="multipart/form-data":设置表单数据的编码类型。对于文件上传的表单,必须使用multipart/form-data,这是因为文件数据比较复杂,需要以这种方式来正确地将文件内容和其他表单数据一起发送到服务器。它会将表单数据编码为多部分格式,每一部分包含一个表单字段的数据,这样可以确保文件数据能够完整、正确地传输。method="post":指定表单提交时使用的HTTP请求方法。post方法用于向服务器发送数据,适合处理文件上传等操作,因为它可以发送大量的数据,并且数据不会像get方法那样显示在URL中。用途这个表单的主要用途是让用户能够上传文件到服务器。用户可以在表单中选择文件,然后点击提交按钮(虽然代码中没有显示按钮,但通常会有一个<input type="file">用于选择文件和一个<input type="submit">用于提交表单),文件就会被发送到服务器的uploadFile路径对应的处理程序进行处理,比如保存文件到服务器的某个目录等。-->
<form action="uploadFile" enctype="multipart/form-data" method="post"><input type="file" name="upFile"><br><input type="submit" value="上传"></form>
</body>
</html>

上传成功的显示页面

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
上传成功
</body>
</html>

后端

package com.example.uploadfile1.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
/*** @Author: yanyu666_508200729@qq.com* @Date: 2025/5/26* @description:*/
//  重定向到制图,使用 Conroller@Controller
public class UploadFile1 {@PostMapping("uploadFile")public String uploadFile(@RequestParam("upFile") MultipartFile multipartFile){System.out.println("开始上传文件。。。");Map map = new HashMap();if(!multipartFile.isEmpty()){map.put("上传文件参数名称",multipartFile.getName());map.put("内容类型",multipartFile.getContentType());var  ext = "unknown";
//            文件原始名字  .pngvar fileName = multipartFile.getOriginalFilename();
//            . 的索引大于  0  说明   .png    .  的前面一定有字符if(fileName.indexOf(".") > 0){
//                截取  . 后面的内容,也就是我们的后缀ext = fileName.substring(fileName.indexOf(".") + 1);//  . 后面开始截取}
//            使用服务器生产的,具有唯一性的  文件名字  与  .  后缀  拼接var newFileName = UUID.randomUUID().toString() + "." +ext;
//            保存文件到指定的位置var path = "D://upload//" + newFileName;try {multipartFile.transferTo(new File(path));map.put("文件名字",newFileName);} catch (IOException e) {throw new RuntimeException(e);}
//            输出信息到控制台
//            重定向System.out.println("信息" +  map);}return "redirect:/uploadInfo.html";//  重定向到网页视图,避免重复刷新}
}

测试

image-20250526010455826

image-20250526010818618

image-20250526010904654

spring.application.name=uploadFile1
#单个文件最大大小
spring.servlet.multipart.max-file-size=5MB
#单次请求最大大小
spring.servlet.multipart.max-request-size=10MB
#  超出  多少后,直接走磁盘,不走内存
spring.servlet.multipart.file-size-threshold=0KB

相关文章:

  • 浏览器指纹科普 | 语言 vs 界面语言,区别是什么?
  • 解锁集成电路制造新建项目的防震黑科技-江苏泊苏系统集成有限公司
  • 纯彩天气隐私政策
  • java高级 -动态代理
  • unix的定时任务和quartz和spring schedule的cron表达式区别
  • 信息论基础理论与应用全面指南
  • 前端配置nginx代理
  • 原生js实现数据响应方法2.0
  • 深度学习入门(十三):加深网络
  • Linux Docker 安装oracle19c数据库教程
  • 【算法提升】牛牛冲钻五 最长无重复子数组 重排字符串 one_day
  • 热点数据的统计到应用
  • 【Sqoop基础】Sqoop定位:关系型数据库与Hadoop生态间的高效数据桥梁
  • RabbitMQ 集群与高可用方案设计(三)
  • 如何用AI设计LOGO,DeepSeek+豆包免费批量生成
  • 【图论 并集查找】P3671 [USACO17OPEN] Where‘s Bessie? S|普及+
  • CodeGeeX - AI编程助手
  • Java Swing 自定义JOptionPane
  • 【文本分类】KG-HTC 知识图谱提升分类准确率
  • 有铜半孔工艺的制造难点与工艺优化
  • 做网站都需要用到什么/网络营销的六大特征
  • 微网站设计与开发是什么/怎么建设自己的网站
  • 沈阳有资质做网站的公司/新品牌推广策略
  • 我国的课程一般通过/seo外包公司如何优化
  • 企业门户网站运营推广/生意参谋指数在线转换
  • 做网站需要懂什么技术/seo优化网站教程