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

springboot中文件上传到本地

文件上传的业务是我们经常遇到的,那么在spring中该怎么处理这个业务呢?

文件上传三个基础

  • <input type="file" name="image">
  • enctype="multipart/form-data" 这里必须是这个类型,否则上传不了,默认的是application/x-www-form-urlencoded只能上传文本格式的文件。不能用于发送文件
  • action="/api/upload" method="post"
<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>Hello World</title>
</head>
<body>
   <form action="/api/upload" method="post" enctype="multipart/form-data">
       <input type="text" name="name">
       <input type="text" name="age">
       <input type="file" name="image">
       <input type="submit" value="Submit">
   </form>
</body>
</html>

在这里插入图片描述

接口处理

package com.itheima.controller;


import com.itheima.pojo.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;

@Slf4j
@RestController
@RequestMapping("/upload")
public class UploadController {


    @PostMapping
    public Result upload(String name, Integer age, MultipartFile image) throws Exception {
        log.info("文件上传成功 {},{},{}",name,age,image);
        String originalFilename = image.getOriginalFilename();
        image.transferTo(new File("D:\\360Downloads\\"+originalFilename));
        return Result.success();
    }

}

这样,我们就能在D:\360Downloads中看到上传的文件了

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

文件名优化

在这里插入图片描述
如果我们直接使用上传的文件名,会导致同名的被覆盖,造成文件的丢失

@PostMapping
    public Result upload(String name, Integer age, MultipartFile image) throws Exception {
        log.info("文件上传成功 {},{},{}",name,age,image);

        String originalFilename = image.getOriginalFilename();
        int index = originalFilename.lastIndexOf(".");
        String extname = originalFilename.substring(index);
        String filename = UUID.randomUUID().toString() + extname;
        image.transferTo(new File("D:\\360Downloads\\"+filename));
        return Result.success();
}
# 配置单个文件上传大小限制
spring.servlet.multipart.max-file-size=10MB

# 配置单个请求最大大小的限制,一次请求中是可以上传多个文件
spring.servlet.multipart.max-request-size=100MB

http://www.kler.cn/a/286904.html

相关文章:

  • HTTP 配置与应用(局域网)
  • U3D的.Net学习
  • logback日志自定义占位符
  • 微信小程序:实现单选,多选,通过变量控制单选/多选
  • Tcl教程
  • 使用nginx搭建通用的图片代理服务器,支持http/https/重定向式图片地址
  • JVM性能监控实用工具jconsole与jvisualvm
  • 硬盘数据恢复软件哪个好用,已整理12款电脑数据恢复工具(收藏)
  • 惊喜!万博智云亮相2024数博会和第三届828 B2B企业节
  • 哈希基础概念即使用(C++)
  • 基质粘弹性咋回事?与组织生长啥关系?快来看看!
  • DAY11:什么是死锁,如何避免死锁 | 几种典型的锁 | 虚拟内存的概念和用处
  • [进阶]面向对象之static关键字
  • JVM:浅谈JVM调优策略
  • 在VScode中使用Git将本地已有文件夹提交到Github仓库以便于使用版本控制进行项目开发
  • javaSSMmysql宠物领养系统的设计与实现26292-计算机毕业设计项目选题推荐(附源码)
  • 3.6 Browser -- useFullscreen
  • 深度解析C++中函数重载与引用
  • 编译原理简介
  • 【例003】利用MATLAB绘制有趣平面图形
  • python脚本如何用sleep
  • 深度学习模型量化方法
  • 深入探索 HarmonyOS 的 CustomDialog 组件:高级特性与使用场景
  • TCP和UDP的主要区别以及应用场景
  • 【数据结构】二叉树的链式结构,二叉树的遍历,求节点个数以及高度
  • UE5 Widget文件编译Bug