SpringBoot 文件(图片示例)上传

本文详细介绍了使用SpringBoot实现文件上传的过程,包括配置application.yml、编写控制器方法、实现文件上传逻辑,并通过Swagger进行测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、application.yml 配置

spring:
	mvc:
	    # url访问文件路径
	    static-path-pattern: /**
	web:
	    resources: # 用于描述(静态)资源的存放位置 多个路径(逗号隔开)中依次查找是否存在
	      static-locations: classpath:/ ,file:/
	servlet:
	    multipart:
	      max-file-size: 100MB       #单个文件的最大上限
	      max-request-size: 100MB    #单个请求的文件总大小上限
uploadDir: /data/apps/uploadFile/

2、controller

@ApiOperation(value = "文件上传接口")
@PostMapping(value = "/uploadFile")
public String generalUploadFile(@ApiParam(value = "上传的文件", required = true) @RequestPart MultipartFile file) {
    return goodsService.generalUploadFile(file);
}

3、impl

@Value("${uploadDir}")
    private String uploadDir;

@Override
    public String generalUploadFile(MultipartFile file) {
        //判断传入的文件是否为空
        if (Objects.isNull(file) || file.isEmpty() || file.getOriginalFilename() == null) {
            log.error("文件为空");
            throw new ServiceException("文件为空,请重新上传");
        }
        // 获取传入的文件名
        String fileName = file.getOriginalFilename();
        // 获取文件名的后缀
        String suffixName = fileName.substring(fileName.lastIndexOf("."));
        // 把文件名重命名,按照时间戳.jpg 保证文件唯一
        fileName = System.currentTimeMillis() + suffixName;
        // 项目启动时的上下文路径(视项目而定)
        String contextPath = servletConfig.getContextPath();
        // 返回给前台的文件路径
        String url = contextPath + uploadDir + fileName;
        // 服务器生成文件的路径
        File newFile = new File(uploadDir + fileName);
        try {
            // 检测父级是否存在目录
            if (!newFile.getParentFile().exists()) {
                newFile.getParentFile().mkdirs();
            }
            // 把内存图片写入磁盘中
            file.transferTo(newFile);
        } catch (IOException e) {
            log.error("文件写入磁盘IO异常 ", e);
            throw new ServiceException("文件写入磁盘IO异常");
        }
        return url;
    }

4、swagger 测试

在这里插入图片描述

5、浏览器显示

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值