文件上传映射服务器路径

导入依赖

        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.4</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>

yml:

#文件上传
file:
  #静态资源对外暴露的访问路径
  staticAccessPath: /api/file/**
  #静态资源实际存储路径
  uploadFolder: D:/static/teamImages/
server:
  # 端口号(任意)
  port: 8000 
spring:
  servlet:
    multipart:
      max-request-size: 100MB
      max-file-size: 10MB

新建配置类:

@Configuration
public class UploadConfig implements WebMvcConfigurer {
    @Value("${file.staticAccessPath}") //服务器访问路径
    private String staticAccessPath;
    @Value("${file.uploadFolder}") //获取到文件上传的路径(D盘...或其他文件路径)
    private String uploadFolder;

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler(staticAccessPath).addResourceLocations("file:" + uploadFolder);
    }
}

新建controller

@RestController
@CrossOrigin
public class UploadController {
    @Value("${file.uploadFolder}")
    private String uploadFolder;    
    @RequestMapping("/upload")
    public String upload(@RequestParam("file") MultipartFile file) throws UnknownHostException {
        //使用UUID生成唯一标识
        String randomNumber = UUID.randomUUID().toString().replace("-", "");
        //创建一个唯一标识作为评论的主键以及队伍的一个字段,方便用来保存数据将队伍与队伍描述建立起关系
        //获取文件的原始名
        String oldFilename = file.getOriginalFilename();
        //使用FilenameUtils获得文件的后缀(先导依赖Commons-fileUpload)
        String extension = FilenameUtils.getExtension(file.getOriginalFilename());
        //生成新的文件名(队伍名+随机数+后缀名)
        String newFileName = randomNumber + "." + extension;
        //使用ResourceUtils类路径再获取文件保存的路径

        File dateDir = new File(uploadFolder);
        if (!dateDir.exists()) {
            //判断目录是否存在,不存在则直接创建
            dateDir.mkdirs();
        }
        try {
            //将文件存储到本地
            file.transferTo(new File(uploadFolder, newFileName));
        } catch (IOException e) {
            e.printStackTrace();
            return "上传失败";
        }

        ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = requestAttributes.getRequest();
        StringBuffer url = request.getRequestURL();
        String urlPrefix = url.substring(0, url.length() - request.getRequestURI().length());

        //上传完毕,存入数据库中的地址为:
        String invented_address= urlPrefix + "/api/file/" + newFileName;
        return "上传成功,虚拟路径为:"+invented_address;
    }
}

此时再通过接口返回的url就可以访问上传到本地磁盘上的文件了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值