1.引入依赖
<dependencies>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
</dependency>
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-vod</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-sdk-vod-upload</artifactId>
</dependency>
</dependencies>
1.1applicaion的配置
server.port=8003
spring.application.name=service-vod
spring.profiles.active=dev
aliyun.vod.file.keyid=your accessKeyId
aliyun.vod.file.keysecret=your accessKeySecret
spring.servlet.multipart.max-file-size=1024MB
spring.servlet.multipart.max-request-size=1024MB
1.2创建常量类
@Component
public class ConstantVodUtils implements InitializingBean {
@Value("${aliyun.vod.file.endpoint}")
private String endpoint;
@Value("${aliyun.vod.file.keyid}")
private String keyId;
@Value("${aliyun.vod.file.keysecret}")
private String keySecret;
@Value("${aliyun.vod.file.bucketname}")
private String bucketName;
public static String END_POIND;
public static String ACCESS_KEY_ID;
public static String ACCESS_KEY_SECRET;
public static String BUCKET_NAME;
@Override
public void afterPropertiesSet() throws Exception {
END_POIND = endpoint;
ACCESS_KEY_ID = keyId;
ACCESS_KEY_SECRET = keySecret;
BUCKET_NAME = bucketName;
}
}
1.3工具类创建
public class InitObject {
public static DefaultAcsClient initVodClient(String accessKeyId, String accessKeySecret) throws ClientException {
String regionId = "cn-shanghai";
DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
DefaultAcsClient client = new DefaultAcsClient(profile);
return client;
}
}
2.前端实现
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/bf572f96600951ae7557750180670cbf.png)
3.后端创建接口
@RestController
@RequestMapping("/vod/video")
@Api(description = "视频管理")
public class vodController {
@Autowired
VodService vodService;
@ApiOperation(value = "视频上传")
@PostMapping("/upload")
public Msg upload(MultipartFile file){
String vodId=vodService.uploadVideoAly(file);
return Msg.success().data("videoId",vodId);
}
3.1调用service层
public interface VodService {
String uploadVideoAly(MultipartFile file);
void removeBeacn(List videoList);
}
3.2实现service层
@Service
public class vodServiceImpl implements VodService {
@Override
public String uploadVideoAly(MultipartFile file) {
try {
String fileName =file.getOriginalFilename();
String title =fileName.substring(0,fileName.lastIndexOf("."));
InputStream inputStream =file.getInputStream();
UploadStreamRequest request = new UploadStreamRequest(ConstantVodUtils.ACCESS_KEY_ID, ConstantVodUtils.ACCESS_KEY_SECRET, title, fileName, inputStream);
UploadVideoImpl uploader = new UploadVideoImpl();
UploadStreamResponse response = uploader.uploadStream(request);
String videoId =null;
if (response.isSuccess()) {
videoId =response.getVideoId();
} else {
videoId =response.getVideoId();
}
return videoId;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
删除视频功能 1.创建接口
@DeleteMapping("{videoId}")
public R removeVideo(@ApiParam(name = "videoId", value = "云端视频id", required = true)
@PathVariable String videoId){
videoService.removeVideo(videoId);
return R.ok().message("视频删除成功");
}
2.service层
void removeVideo(String videoId);
3.实现service层
@Override
public void removeBeacn(List videoList) {
try {
DefaultAcsClient client = InitObject.initVodClient(ConstantVodUtils.ACCESS_KEY_ID, ConstantVodUtils.ACCESS_KEY_SECRET);
DeleteVideoRequest request =new DeleteVideoRequest();
String join = StringUtils.join(videoList.toArray(), ",");
request.setVideoIds(join);
client.getAcsResponse(request);
}catch (Exception e){
e.printStackTrace();
throw new GuliException(20001, "删除视频失败");
}
}