一.阿里云上传视频图片到对象存储OSS
jar包
<!-- 阿里云oss依赖 -->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.8.1</version>
</dependency>
Controller
@AllArgsConstructor
@RestController
@RequestMapping("/aliyun/oss")
public class UploadOssController {
private IUploadOssService uploadOssService;
@ApiOperation("上传图片或视频到阿里云OSS")
@RequestMapping("headUpload")
public CommonResult<String> headUpload(@RequestParam("file") MultipartFile file) {
uploadOssService.headOssUpload(file);
return CommonResult.success("操作成功");
}
}
Service
@Override
public String headOssUpload(MultipartFile file) {
// 从工具类中获取对象
// 区域地址:cn-hangzhou(华东1 杭州),根据自己所选区域赋值
String endpoint = "oss-cn-hangzhou.aliyuncs.com";
String accessKeyId = "阿里云accessKeyId";
String accessKeySecret = "阿里云accessKeySecret";
String bucketName = "阿里云存储对象OSS空间名";
// 创建OSS实例
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
try {
// 获取上传文件的输入流
InputStream inputStream = file.getInputStream();
// 获取文件原始名称
String filename = file.getOriginalFilename();
// 完善1、 --> 在文件名中添加唯一值
String uuid = UUID.randomUUID().toString().replace("-", "");
filename = uuid + filename;
// 完善2、 --> 把文件按照日期分类
String datePath = new DateTime().toString("yyyy/MM/dd");
// 拼接地址:时间 yyyy/MM/dd/filename
filename = "douyin-xjy/material/" + datePath + "/" + filename;
//System.out.println(filename);
// 调用oss方法实现上传
// 1、bucketName 2、上传到oss文件路径和文件名称 3、文件的输入流
ossClient.putObject(bucketName, filename, inputStream);
// 获取url地址(根据阿里云oss中的图片实例拼接字符串) 拼接url字符串
// https://edu-leader.oss-cn-beijing.aliyuncs.com/%E4%BB%96.jpg
String url = "https://"+bucketName+"."+endpoint+"/"+filename;
// 关闭oss
ossClient.shutdown();
return url;
} catch (IOException e) {
e.printStackTrace();
return null;
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
二.删除对象存储OSS中的文件
@Override
public void delOssFile(String objectName) {
// 从工具类中获取对象
// 区域地址:cn-hangzhou(华东1 杭州),根据自己所选区域赋值
String endpoint = "oss-cn-hangzhou.aliyuncs.com";
String accessKeyId = "阿里云accessKeyId";
String accessKeySecret = "阿里云accessKeySecret";
String bucketName = "阿里云存储对象OSS空间名";
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
objectName =objectName.replaceAll("https://"+bucketName+"."+endpoint+"/", "");
try {
// 删除文件或目录。如果要删除目录,目录必须为空。
/**
* objectName指文件目录地址,例如:空间名/文件地址
* 例如:https://douyin-xjy.oss-cn-hangzhou.aliyuncs.com/douyin-xjy/hecheng/2023/04/20/e365a31b279e421a9fd295a0441dd92f.mp4
* douyin-xjy:为设置的阿里云存储对象OSS空间名
* objectName = douyin-xjy/hecheng/2023/04/20/e365a31b279e421a9fd295a0441dd92f.mp4
*/
ossClient.deleteObject(bucketName, objectName);
// 关闭OSSClient。
ossClient.shutdown();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
二.阿里云对象存储OSS视频获取第一帧图片
在视频地址后面拼接:?x-oss-process=video/snapshot,t_0,f_jpg,w_0,h_0,m_fast,ar_auto