配置文件——yml
#----------阿里云OSS配置-------------- aliyun: oss: endpoint: oss-cn-zhangjiakou.aliyuncs.com access-key-id: LAftAj access-key-secret: fBk3lq2kvQFo bucketname: my-cloud-dbc
依赖文件——pom
<!--阿里云oss--> <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>${aliyun.oss.version}</version> </dependency>
<aliyun.oss.version>3.10.2</aliyun.oss.version>
配置类——OSSConfig
import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; /** * @author DBC * @version 1.0.0 * @date 2022年10月01日 17:39:48 * @website dbc655.top */ @ConfigurationProperties(prefix = "aliyun.oss") @Configuration @Data public class OSSConfig { private String endpoint; private String accessKeyId; private String accessKeySecret; private String bucketname; }
控制层——Controller
@Autowired private FileService fileService; /** * 文件上传 最大默认1M * 文件格式、拓展名等判断 * @param file * @return */ @PostMapping("upload") public JsonData uploadUserImg(@RequestPart("file")MultipartFile file){ String result = fileService.uploadUserImg(file); return result !=null ? JsonData.buildSuccess(result):JsonData.buildResult(BizCodeEnum.FILE_UPLOAD_USER_IMG_FAIL); }
实现层——FileServiceImpl
package net.dbc.service.impl; import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClient; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.model.PutObjectResult; import lombok.extern.slf4j.Slf4j; import net.dbc.config.OSSConfig; import net.dbc.service.FileService; import net.dbc.utils.CommonUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; /** * @author DBC * @version 1.0.0 * @date 2022年10月01日 17:42:19 * @website dbc655.top */ @Service @Slf4j public class FileServiceImpl implements FileService { @Autowired private OSSConfig ossConfig; @Override public String uploadUserImg(MultipartFile file) { String bucketName = ossConfig.getBucketname(); String endpoint = ossConfig.getEndpoint(); String accessKeyId = ossConfig.getAccessKeyId(); String accessKeySecret = ossConfig.getAccessKeySecret(); //oss客户端构建 OSS ossClient = new OSSClientBuilder().build(endpoint,accessKeyId,accessKeySecret); //获取文件原始名称 xxx.jpg String originalFilename = file.getOriginalFilename(); //jdk8语法日期格式 LocalDateTime ldt = LocalDateTime.now(); DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy/MM/dd"); //user/2022/12/12/sdsdwe/ String folder = pattern.format(ldt); String fileName = CommonUtil.generateUUID(); String extendsion = originalFilename.substring(originalFilename.lastIndexOf(".")); //在oss上的bucket创建文件夹 String newFilename = "user/"+folder+"/"+fileName+extendsion; try { PutObjectResult putObjectResult = ossClient.putObject(bucketName, newFilename, file.getInputStream()); //拼装返回路径 if(putObjectResult!=null){ String imgUrl = "https://"+bucketName+"."+endpoint+"/"+newFilename; return imgUrl; } } catch (IOException e) { log.error("文件上传失败:{}",e.getMessage()); }finally { ossClient.shutdown(); } return null; } }
本文作者为DBC,转载请注明。