Spring文件上传和下载预览-WebMvcConfigurer方式

发布时间 2023-07-20 10:43:43作者: 公众号/架构师与哈苏

WebMvcConfigurer配置添加resources映射到本地路径


package com.example.springfileupload3.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * WebConfig
 *
 * @Description
 * @Author wzq
 **/
@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        // /files/**为resources下的路径
        // /files/** 映射到本地的路径 file:D:/work/temp/
        // 文件上传到file:D:/work/temp/路径后,可根据ip:port/files/文件名称
        // 例如 http://127.0.0.1:8080/files/logo.png 来进行访问
        registry.addResourceHandler("/files/**")
                .addResourceLocations("file:D:/work/temp/");
    }
}

FileUploadController文件上传

package com.example.springfileupload3.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

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

/**
 * 文件上传
 *
 * @Description
 * @Author wzq
 **/
@RestController
public class FileUploadController {

    @RequestMapping("/fileUpload")
    public String fileUpload(@RequestParam("file") MultipartFile file) throws IOException {
        String filePath = "D:/work/temp/" + file.getOriginalFilename();
        file.transferTo(new File(filePath));
        return "success";
    }

}

访问:http://127.0.0.1:8080/files/文件名.png