1.申请阿里云秘钥
2.创建Bucket
3.对应模块添加依赖
4.文件上传控制类
@Api(tags = "文件上传接口管理")
@RequestMapping("admin/file")
@RestController
public class FileUploadController {
@Resource
private 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.com
bucketName: ynu-mall
accessKeyId:
accessKeySecret: