SpringBoot 2.x 实现图片上传,并映射资源路径访问图片

首先配置虚拟路径,将实际的文件路径(G://upload/files/)映射到springboot容器的资源路径 (/upload/**)

/**
 * @Author yimocha
 * @Date 2020/7/22 17:32
 * @Version 1.0
 * 设置虚拟路径,访问绝对路径下资源
 **/
@Configuration
public class UploadConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/upload/**").addResourceLocations("file:G://upload/files/");
    }

}

上传文件的controller

/**
 * @Author yimocha
 * @Date 2020/7/24 14:42
 * @Version 1.0
 **/
@RestController
public class FileController {

    @RequestMapping("/fileUpload")
    public String uploadImg(MultipartFile file){
        if (file.isEmpty()) {
            System.out.println("上传的文件为空!");
        }
        // 文件名
        String fileName = file.getOriginalFilename();
        // 获取文件后缀名
        String extension = fileName.substring(fileName.indexOf("."));
        // 上传文件的路径
        String uploadFolder = "G://upload/files/";
        // 生成一个新的文件名
        fileName = UUID.randomUUID() + extension;

        File dest = new File(uploadFolder + fileName);
        // 检测文件目录是否存在 不存在则创建
        if (!dest.getParentFile().exists()){
            dest.getParentFile().mkdirs();
        }

        try {
            file.transferTo(dest);
            System.out.println("上传文件成功!");
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("上传文件失败!");
        }
        // 返回虚拟文件访问路径
        return "/upload/" + fileName;
    }

}

写的一个简单的测试页面

注意,上传的文件名要与接口上的参数名一致 file
SpringBoot 2.x 实现图片上传,并映射资源路径访问图片_第1张图片


<html>
<head>
<meta charset="utf-8">
head>

<body>

	<form action="http://localhost:8080/fileUpload" method="post" enctype="multipart/form-data">
		<input type="file" name="file">
		<input type="submit" value="上传"/>
	form>

body>

html>

测试
SpringBoot 2.x 实现图片上传,并映射资源路径访问图片_第2张图片
返回结果 /upload/6c813524-4667-4841-96b9-7fb260091ae4.jpg
SpringBoot 2.x 实现图片上传,并映射资源路径访问图片_第3张图片
查看图片是否上传成功 地址:http://localhost:8080/upload/6c813524-4667-4841-96b9-7fb260091ae4.jpg
SpringBoot 2.x 实现图片上传,并映射资源路径访问图片_第4张图片
我们发现本地目录下有文件
SpringBoot 2.x 实现图片上传,并映射资源路径访问图片_第5张图片

你可能感兴趣的:(问题,SpringBoot)