springboot 文件上传 快速入门

文件上传是web开发非常重要

在数字时代,文件上传已成为我们日常生活中不可或缺的一部分。无论是工作中的文档分享、学习中的资料交流,还是娱乐中的视频、图片分享,文件上传都为我们提供了便捷、高效的数据交换方式。然而,文件上传不仅仅是简单的数据传输,它背后蕴含着技术、安全、用户体验等多方面的考量。

Spring Boot 中使用 MultipartFile 实现文件上传

在Spring Boot应用中,处理文件上传通常涉及到使用MultipartFile接口。MultipartFile是Spring框架提供的一个接口,用于处理表单中的multipart/form-data编码类型的数据,特别是文件上传。下面是一个简单的例子,展示如何在Spring Boot控制器中使用MultipartFile接口实现文件上传功能,并将文件保存在本地磁盘上。

1.创建uploadcontroller类

@RestController
public class UploadController {
    @PostMapping("/update")
    public String update(@RequestParam("file") MultipartFile file) {

        //判断 是否为空
        if (file.isEmpty()) {
            return "error";
        }
        //获取图片文件名称
        String originalFilename = file.getOriginalFilename();
        String extention = originalFilename.substring(originalFilename.lastIndexOf("."));
        int lastDotIndex = originalFilename.lastIndexOf(".");
        if (lastDotIndex != -1) {
            extention = originalFilename.substring(lastDotIndex);
        }

        // 检查文件后缀是否为图片格式
        String[] imageExtensions = {".jpg", ".jpeg", ".png", ".gif", ".bmp", ".tiff", ".webp"}; // 可以根据需要添加更多
        boolean isImage = false;
        for (String extension : imageExtensions) {
            if (extention.equalsIgnoreCase(extension)) {
                isImage = true;
                break;
            }
        }

        // 如果不是图片格式,则抛出异常
        if (!isImage) {
            return  "上传的文件不是图片格式";
        }
        String string = UUID.randomUUID().toString();// uuid
        String newFileName = string + extention;
        ApplicationHome applicationHome = new ApplicationHome(this.getClass()); //获取当class  target/classes
        String absoluteFile = applicationHome.getDir().getParentFile().getParentFile().getAbsoluteFile()+"\\src\\main\\resources\\image\\";
        String path =absoluteFile+newFileName;
        try {
            file.transferTo(new File(path));
        } catch (IOException e) {
            return  "err";
        }
        return path;
    }
}

在上面的代码中,我们定义了一个POST请求的/upload,它接受一个名为fileMultipartFile参数。然后,我们检查文件是否为空,如果不为空,则将其保存到指定的上传文件夹中。如果文件夹不存在,我们尝试创建它。

在文件中我们上传的是idea src下的文件目录 使用ApplicationHome 获取 ,并进行拼接 获取resourcses 目录下的image

2.upload.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body> //updata 需要跟controller 的postmapping 一致
    <form action="/update"  method="post" enctype="multipart/form-data">
        <input type="file" name="file" value="上传图片">
        <input type="submit" value="上传">
    </form>
</body>
</html>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值