视频上传视频删除 视频上传
新建一个springboot项目,结构大概这样
添加依赖
创建service层
package com.cjw.video.service;import org.springframework.web.multipart.MultipartFile;public interface VideoService { void uploadVideo(MultipartFile file);}
package com.cjw.video.service.impl;import com.aliyun.vod.upload.impl.UploadVideoImpl;import com.aliyun.vod.upload.req.UploadStreamRequest;import com.aliyun.vod.upload.resp.UploadStreamResponse;import com.cjw.video.service.VideoService;import org.springframework.stereotype.Service;import org.springframework.web.multipart.MultipartFile;import java.io.InputStream;@Servicepublic class VideoServiceImpl implements VideoService { @Override public void uploadVideo(MultipartFile file) { try { String originalFilename = file.getOriginalFilename(); InputStream inputStream = file.getInputStream(); testUploadStream("LTAIrNZcZiRfgSys","n9TuOpdaVjl4sZkZusepek","aa",originalFilename,inputStream); }catch (Exception e){ e.printStackTrace(); } } private static void testUploadStream(String accessKeyId, String accessKeySecret, String title, String fileName, InputStream inputStream) { UploadStreamRequest request = new UploadStreamRequest(accessKeyId, accessKeySecret, title, fileName, inputStream); //request.setShowWaterMark(true); //request.setUserData(""{"Extend":{"test":"www","localId":"xxxx"},"MessageCallback":{"CallbackURL":"http://test.test.com"}}""); //request.setCateId(0); //request.setTags("标签1,标签2"); //request.setDescription("视频描述"); //request.setCoverURL("http://cover.sample.com/sample.jpg"); //request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56a33d"); //request.setWorkflowId("d4430d07361f0*be1339577859b0177b"); //request.setStorageLocation("in-201703232118266-5sejdln9o.oss-cn-shanghai.aliyuncs.com"); // request.setPrintProgress(true); // request.setProgressListener(new PutObjectProgressListener()); //request.setAppId("app-1000000"); //request.setApiRegionId("cn-shanghai"); // request.setEcsRegionId("cn-shanghai"); UploadVideoImpl uploader = new UploadVideoImpl(); UploadStreamResponse response = uploader.uploadStream(request); System.out.print("RequestId=" + response.getRequestId() + "n"); //请求视频点播服务的请求ID if (response.isSuccess()) { System.out.print("VideoId=" + response.getVideoId() + "n"); } else { //如果设置回调URL无效,不影响视频上传,可以返回VideoId同时会返回错误码。其他情况上传失败时,VideoId为空,此时需要根据返回错误码分析具体错误原因 System.out.print("VideoId=" + response.getVideoId() + "n"); System.out.print("ErrorCode=" + response.getCode() + "n"); System.out.print("ErrorMessage=" + response.getMessage() + "n"); } }}
复制过去会发现编译器爆红,有几个包导不了,需要去阿里云下载
下载好了解压,
只需要这一个jar包
然后去idea找到File --> project Structure --> modules
选择刚刚下载的 aliyun-java-vod-upload-1.4.14.jar ,应用,然后就可以导包了。
对于这个 testUploadStream(“LTAI4G7nRizWrNZcZ”,“n9TuOVjl4sZkZusepek”,“aa”,originalFilename,inputStream);
第一个参数accessKeyId,第二个accessKeySecret,前两个在自己阿里云里面可以找到(如果没找到,可以看我之前的一篇文章,https://blog.csdn.net/weixin_46146197/article/details/121793267?spm=1001.2014.3001.5502)里面有教程。
第三个title是表示存储在阿里云的名字(这里我是写死了aaa所以每个上传好的视频都叫aaa,你可以获取好原视频的名称再放进去String substring = originalFilename.substring(0, originalFilename.lastIndexOf("."));)。
第四个是原文件名字。
第五个是上传文件输入流。
再创建controller
package com.cjw.video.controller;import com.aliyun.vod.upload.impl.UploadVideoImpl;import com.aliyun.vod.upload.req.UploadStreamRequest;import com.aliyun.vod.upload.resp.UploadStreamResponse;import com.cjw.video.service.VideoService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.*;import org.springframework.web.multipart.MultipartFile;import java.io.IOException;import java.io.InputStream;@RestController@RequestMapping("/video")public class videoController { @Autowired private VideoService videoService; @PostMapping(value = "uploadVideo/interAspect",headers = "content-type=multipart/form-data") public void uploadVideo(@RequestParam("file") MultipartFile file) throws IOException { videoService.uploadVideo(file); }}
最后配置文件
#服务端口server.port=8999#服务名spring.application.name=uploadVideo#环境设置:spring.profiles.active=dev# 最大上传单个文件大小:默认1Mspring.servlet.multipart.max-file-size=1024MB# 最大置总上传的数据大小 :默认10Mspring.servlet.multipart.max-request-size=1024MBlogging.level.root = INFO
用postman测试
用postman测试的时候,接口需要再最后加interAspect(我上面代码就加了),不然通不了
上传成功返回一个videoId,然后把这个id存到数据库就可。
controller
@DeleteMapping(value = "deleteUploadVideo/interAspect/{id}") public void deleteUploadVideo(@PathVariable("id") String id) { videoService.deleteUploadVideo(id); }
serviceImpl
@Override public void deleteUploadVideo(String id) { try { //初始化对象 DefaultAcsClient client = getClient("LTAI4G7nRizWcZiRfgSys","n9TuOpZPW9QNyusepek"); //创建删除视频request对象 DeleteVideoRequest request = new DeleteVideoRequest(); //向request设置视频id request.setVideoIds(id); //调用初始化对象的方法实现删除 client.getAcsResponse(request); }catch(Exception e) { e.printStackTrace(); } } public static DefaultAcsClient getClient(String accessKeyId, String accessKeySecret) throws ClientException { String regionId = "cn-shanghai"; // 点播服务接入区域 DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret); DefaultAcsClient client = new DefaultAcsClient(profile); return client; }