SpringBoot3附件文件上传阿里云OSS储存方法教程附带源码
C层:
- package com.zidiu.controller.admin;
-
- import com.zidiu.constant.MessageConstant;
- import com.zidiu.result.Result;
- import com.zidiu.utils.AliOssUtil;
- import io.swagger.v3.oas.annotations.Operation;
- import io.swagger.v3.oas.annotations.tags.Tag;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.PostMapping;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
- import org.springframework.web.multipart.MultipartFile;
-
- import java.io.IOException;
- import java.time.LocalDate;
- import java.time.format.DateTimeFormatter;
- import java.util.UUID;
-
- @RestController
- @Slf4j
- @Tag(name = "通用接口")
- @RequestMapping("/admin/common")
- public class CommonController {
- @Autowired
- private AliOssUtil aliOssUtil;
- /**
- * 文件上传
- * @param file
- * @return
- */
- @PostMapping("/upload")
- @Operation(summary = "文件上传", description = "文件上传")
- // 前后端的参数名称必须相同,否则无法接收 file
- public Result<String> upload(MultipartFile file){
- log.info("文件上传:{}",file);
- try {
- //原始文件名
- String originalFilename = file.getOriginalFilename();
- //截取原始文件名的后缀 dfdfdf.png
- String extension = null;
- if (originalFilename != null) {
- extension = originalFilename.substring(originalFilename.lastIndexOf("."));
- }
- //构造新文件名称
- // 填写Object完整路径,例如202406/1.png。Object完整路径中不能包含Bucket名称。
- //获取当前系统日期的字符串,格式为 yyyy/MM
- String dir = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd"));
- String newFileName = UUID.randomUUID().toString() + extension;
- String objectName = dir + "/" + newFileName;
- //文件的请求路径
- String filePath = aliOssUtil.upload(file.getBytes(), objectName);
- return Result.success(filePath);
- } catch (IOException e) {
- log.error("文件上传失败:{}", e);
- }
-
- return Result.error(MessageConstant.UPLOAD_FAILED);
- }
- }
复制代码 工具类:
读取阿里云OSS的配置属性:
- package com.zidiu.properties;
-
- import lombok.Data;
- import org.springframework.boot.context.properties.ConfigurationProperties;
- import org.springframework.stereotype.Component;
- /**
- * 读取阿里云OSS的配置属性
- */
- @Component
- @ConfigurationProperties(prefix = "jinhei.alioss")
- @Data
- public class AliOssProperties {
- private String endpoint;
- private String accessKeyId;
- private String accessKeySecret;
- private String bucketName;
-
- }
复制代码 config配置自动注入:
- package com.zidiu.config;
-
- import com.zidiu.properties.AliOssProperties;
- import com.zidiu.utils.AliOssUtil;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
-
- /**
- * 配置类,用于创建AliOssUtil对象
- */
- @Configuration
- @Slf4j
- public class OssConfiguration {
-
- @Bean
- @ConditionalOnMissingBean // 如果容器中没有这个对象,则创建,保证只有一个
- public AliOssUtil aliOssUtil(AliOssProperties aliOssProperties){
- log.info("开始创建阿里云文件上传工具类对象:{}",aliOssProperties);
- return new AliOssUtil(aliOssProperties.getEndpoint(),
- aliOssProperties.getAccessKeyId(),
- aliOssProperties.getAccessKeySecret(),
- aliOssProperties.getBucketName());
- }
- }
复制代码 yml层:
dev.yml层:
jinhei-waimai.zip
(487.41 KB, 下载次数: 0, 售价: 50 金币)
SpringBoot3+SSM的企业级Java项目实战之外卖小程序
|