谷粒学院97——添加小节的视频上传功能
97.添加小节的视频上传功能
(1)引入依赖
已完成.
(2)配置appliaction.properties
# 服务端口号
server.port=8003
# 服务名
spring.application.name=service_vod
# 环境设置 dev test prod
spring.profiles.active=dev
# 最大上***个文件大小:默认1M
spring.servlet.multipart.max-file-size=1024MB
# 最大置总上传的数据大小 :默认10M
spring.servlet.multipart.max-request-size=1024MB
# 阿里云 vod
aliyun.vod.file.keyid=xxx
aliyun.vod.file.keysecret=xxx
上面vod部分请读者自己配置。
(3)创建启动类
package com.wangzhou.vod;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
// 该模块与数据库无交互,加入exclude参数避免报错
@SpringBootApplication(exclude = DataSourceAutoConfiguration.cla***包扫描规则,这样我们就能用到swager-ui等在com.wangzhou中存放的功能
@ComponentScan(basePackages = "com.wangzhou")
public class VodApplication {
public static void main(String[] args) {
SpringApplication.run(VodApplication.class ,args);
}
}
(4)Controller
@RestController
@CrossOrigin
@RequestMapping("eduvod/video")
public class VodController {
@Autowired
private VodService vodService;
@PostMapping("/uploadVideo")
public R uploadVideo(MultipartFile file) {
String videoId = vodService.uploadFile(file);
return R.ok().data("videoId", videoId);
}
}
(5)service
public interface VodService {
String uploadFile(MultipartFile file);
}
/**
* 文件流上传接口
*
*/
@Override
public String uploadFile(MultipartFile file) {
try {
String videoId;
String accessKeyId = ConstantVodUtils.ACCESSKEY_ID;
String accessKeySecret = ConstantVodUtils.ACCESSKEY_SECRET;
String fileName = file.getOriginalFilename();
String title = fileName.substring(0, fileName.lastIndexOf("."));
UploadFileStreamRequest request = new UploadFileStreamRequest(accessKeyId, accessKeySecret, title, fileName);
UploadVideoImpl uploader = new UploadVideoImpl();
UploadFileStreamResponse response = uploader.uploadFileStream(request);
/* 如果设置回调URL无效,不影响视频上传,可以返回VideoId同时会返回错误码。其他情况上传失败时,VideoId为空,此时需要根据返回错误码分析具体错误原因 */
videoId = response.getVideoId();
return videoId;
} catch (Exception e) {
e.printStackTrace();
return null;
}
(6)application.properties
# 服务端口号
server.port=8003
# 服务名
spring.application.name=service_vod
# 环境设置 dev test prod
spring.profiles.active=dev
# 最大上***个文件大小:默认1M
spring.servlet.multipart.max-file-size=1024MB
# 最大置总上传的数据大小 :默认10M
spring.servlet.multipart.max-request-size=1024MB
# 阿里云 vod
aliyun.vod.file.keyid=LTAI5tFgGXoyhNYWPMHf3gNz
aliyun.vod.file.keysecret=C8acTTWjFrySJIarGvSfJVTQNce1vt
(7)ConstantVodUtils
@Component
public class ConstantVodUtils implements InitializingBean {
@Value("${aliyun.vod.file.keyid}")
private String keyId ;
@Value("${aliyun.vod.file.keysecret}")
private String keysecret;
public static String ACCESSKEY_ID;
public static String ACCESSKEY_SECRET;
@Override
public void afterPropertiesSet() throws Exception {
ACCESSKEY_ID = keyId;
ACCESSKEY_SECRET = keysecret;
}
}
java全栈日日学 文章被收录于专栏
java全栈每日必学,不要高估自己一年能做的事,不要低估自己十年能做的事