springboot 2.x文件上传

1.java代码

package com.hcr.controller;

import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

@RestController
public class FileController {
    @RequestMapping(value = "/file/upload", method = RequestMethod.POST)
    public Object upload(@RequestParam(value = "file") MultipartFile multipartFile, HttpServletRequest request) throws IOException {
        Map result = new HashMap<>(2);
        // 获取项目路径
        String currentPath = Thread.currentThread().getContextClassLoader().getResource("").getPath();

        // 获取文件名
        String filename = multipartFile.getOriginalFilename();
        // 获取文件的后缀名
        String subFilename = filename.substring(filename.lastIndexOf("."));
        // 重新命名
        filename = UUID.randomUUID() + subFilename;

        // 创建文件
        File file = new File(currentPath + "/upload/" + filename);
        if (!file.exists()) {
            File dir = file.getParentFile();
            if (!dir.exists()) {
                dir.mkdirs();
            }
            file.createNewFile();
        }
        multipartFile.transferTo(file);

        result.put("code", "1");
        result.put("data", file.getPath());
        return result;
    }

}

2.html代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form enctype="multipart/form-data" action="/file/upload" method="post">
    文件上传:<input type="file" name="file"/> <br/>
    姓名:<input type="text" name="name"/> <br/>
    <input type="submit" value="提交">
</form>
</body>
</html>

3.访问html页面
路径:http://localhost:8080/upload_file.html
在这里插入图片描述
在这里插入图片描述
4.测试结果
在这里插入图片描述
5.参考文章链接
小滴课堂
HTML上传文件的多种方式
java中获取类加载路径和项目根路径的5种方法
java创建多级目录以及文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值