1.申请阿里云秘钥
2.创建Bucket
3.对应模块添加依赖
4.文件上传控制类
@Api(tags = "文件上传接口管理")
@RequestMapping("admin/file")
@RestController
public class FileUploadController {@Resourceprivate AliyunOSSConfig aliyunOSSConfig;/*** 上传文件:* 1.接口要求请求方式必须是post请求* 2.接收文件的对象的类型是:MultipartFile 该对象是SpringMVC提供的* @return 此处返回的是url地址*/@ApiOperation("上传单个文件")@PostMapping("upload/element")public String uploadFile(MultipartFile file) {// 填写Bucket名称String bucketName = aliyunOSSConfig.getBucketName();// 以天为单位的名称,作为文件夹名称String newFolderName = DateUtil.format(new Date(), "yyyy-MM-dd");// 以时间戳作为文件的新名称String newFileName = DateUtil.format(new Date(), "HHmmssSSS");// 获取原文件的后缀名称String originalFilename = file.getOriginalFilename();String fileSuffix = originalFilename.substring(originalFilename.lastIndexOf("."));// 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。String objectName = newFolderName+"/"+newFileName+fileSuffix;// 创建OSSClient实例。OSS ossClient = new OSSClientBuilder().build(aliyunOSSConfig.getEndpoint(), aliyunOSSConfig.getAccessKeyId(), aliyunOSSConfig.getAccessKeySecret());URL url = null;try {// 创建PutObjectRequest对象。PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, file.getInputStream());// 上传ossClient.putObject(putObjectRequest);// 创建上传文件访问的url地址url = ossClient.generatePresignedUrl(bucketName, objectName, DateUtil.offsetDay(new Date(), 365 * 10));} catch (Exception ce) {System.out.println("Error Message:" + ce.getMessage());} finally {if (ossClient != null) {ossClient.shutdown();}}return url.toString();}
}
5.阿里云平台-对象存储OSS服务配置类
public class AliyunOSSConfig {/*** 访问地址*/private String endpoint;/*** bucket名称*/private String bucketName;/*** 访问ID*/private String accessKeyId;/*** 访问密钥*/private String accessKeySecret;
}
6.bootstrap.yml配置 放到nacos远程配置中
aliyun:oss:endpoint: oss-cn-beijing.aliyuncs.combucketName: ynu-mallaccessKeyId: accessKeySecret: