1.导入对应的依赖
<!-- 阿里云oss依赖 -->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.1.0</version>
</dependency>
2.yml配置
aliyun:
oss:
file:
endpoint: http://oss-cn-beijing.aliyuncs.com
keyId: xxxx
keySecret: xxxxx
bucketName: xxxxxx
3.写一个工具类
//项目已启动,spring接口,spring加载之后,执行接口一个方法
@Component
public class ConstantPropertiesUtils implements InitializingBean {
@Value("${aliyun.oss.file.endpoint}")
private String endpoint;
@Value("${aliyun.oss.file.keyid}")
private String keyId;
@Value("${aliyun.oss.file.keysecret}")
private String keySecret;
@Value("${aliyun.oss.file.bucketname}")
private String bucketName;
// 定义公开的静态常量
public static String END_POINT;
public static String ACCESS_KEY_ID;
public static String ACCESS_KEY_SECRET;
public static String BUCKET_NAME;
@Override
public void afterPropertiesSet() throws Exception {
END_POINT = endpoint;
ACCESS_KEY_ID = keyId;
ACCESS_KEY_SECRET = keySecret;
BUCKET_NAME = bucketName;
}
}
4.上传代码
public interface FileService {
/**
* 文件上传至阿里云
* @param file
* @return
*/
String upload(MultipartFile file);
}
@Service
public class FileServiceImpl implements FileService {
@Override
public String upload(MultipartFile file) {
//获取阿里云存储相关常量
String endPoint= ConstantPropertiesUtils.END_POINT;
String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;
String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;
String bucketName = ConstantPropertiesUtils.BUCKET_NAME;
try {
//创建OssClient实例
OSS ossClient = new OSSClientBuilder().build(endPoint, accessKeyId, accessKeySecret);
//获取上传文件的输入流
InputStream inputStream = file.getInputStream();
//获取文件名称
String filename = file.getOriginalFilename();
//使文件名称唯一
String uuid = UUID.randomUUID().toString().replace("-", "");
filename=uuid+filename;
把文件按照日期进行分类 2019/11/12/01.jpg
获取当前日期
//String datePath = new DateTime().toString("yyyy/MM/dd");
拼接
//fileName = datePath + "/" + fileName;
//调用oss方法实现上传
//参数:bucketName;上传到oss文件路径和文件名称;上传文件输入流
ossClient.putObject(bucketName,filename,inputStream);
//关闭OSSclient
ossClient.shutdown();
// 把上传之后文件路径返回,需手动拼接上传到阿里云的oss路径
// https://edu-mys.oss-cn-chengdu.aliyuncs.com/yy.JPG
String url =bucketName + "." + endPoint + "/" + filename;
return url;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
@Api(description="阿里云文件管理")
@RestController
@RequestMapping("/eduoss/fileoss")
@CrossOrigin
public class OssController {
@Autowired
private FileService fileService;
// 上传头像方法
@ApiOperation(value = "文件上传")
@PostMapping
public R uploadOssFile(@ApiParam(name = "file", value = "文件", required = true)
@RequestParam("file") MultipartFile file) {
// 返回上传文件到oss的路径
String upload = fileService.upload(file);
return R.ok().data("url",upload);
}
}