使用MultipartFile 做文件上传的功能
MultipartFile
<body> <form enctype="multipart/form-data" method="post" action="/upload"> 文件:<input type="file" name="head_img"/> 姓名:<input type="text" name="name"/> <input type="submit" value="上传"/> </form> </body>
控制器
import net.xdclass.demo.domain.JsonData; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.io.File; import java.io.IOException; import java.util.UUID; @RestController public class FileController { private static final String filePath = "D:\\IdeaProjects\\xdclass_springboot\\src\\main\\resources\\static\\images\\"; @PostMapping(value = "/upload") public JsonData upload( @RequestParam(value = "head_img") MultipartFile file, HttpServletRequest request) { // 表单的 name="name" 属性 String name = request.getParameter("name"); // 上传的文件名 String filename = file.getOriginalFilename(); String suffixName = filename.substring(filename.lastIndexOf(".")); // 随机生成 filename = UUID.randomUUID() + suffixName; File dest = new File(filePath + filename); try { file.transferTo(dest); return new JsonData(0, dest); } catch (IOException e) { e.printStackTrace(); } return new JsonData(-1, null, "faild to save"); } }
MultipartFile 对象的transferTo方法,用于文件保存(效率和操作比原先用FileOutStream方便和高效)。
{
"code": 0,
"data": "D:\\IdeaProjects\\xdclass_springboot\\src\\main\\resources\\static\\images\\611fbdd7-95c5-4803-8c6f-796cccf6d2be.jpg",
"msg": null
}
查看上传的图片。
http://localhost:8080/images/611fbdd7-95c5-4803-8c6f-796cccf6d2be.jpg
@Bean public MultipartConfigElement multipartConfigElement() { MultipartConfigFactory factory = new MultipartConfigFactory(); //单个文件最大 factory.setMaxFileSize(DataSize.ofMegabytes(300)); /// 设置总上传数据总大小 factory.setMaxRequestSize(DataSize.ofGigabytes(1)); return factory.createMultipartConfig(); }
分类:
SpringBoot2.x
标签:
java
, SpringBoot2.x
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署