diff --git a/book-api/src/main/java/com/imooc/controller/FileController.java b/book-api/src/main/java/com/imooc/controller/FileController.java
index e808156..e9a5044 100644
--- a/book-api/src/main/java/com/imooc/controller/FileController.java
+++ b/book-api/src/main/java/com/imooc/controller/FileController.java
@@ -14,13 +14,16 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
+import com.imooc.utils.QcCloud;
+
+
@Slf4j
@Api(tags = "FileController 文件上传测试的接口")
@RestController
public class FileController {
@Autowired
- private MinIOConfig minIOConfig;
+ private MinIOConfig minIOConfig;
@PostMapping("upload")
public GraceJSONResult upload(MultipartFile file) throws Exception {
@@ -39,4 +42,11 @@ public class FileController {
return GraceJSONResult.ok(imgUrl);
}
+
+ private QcCloud qcCloud;
+ @PostMapping("uploadVd")
+ public GraceJSONResult uploadVd(MultipartFile file) throws Exception {
+ String vdFileId = qcCloud.uploadViaTempFile(file);
+ return GraceJSONResult.ok(vdFileId);
+ }
}
diff --git a/book-common/pom.xml b/book-common/pom.xml
index 47fc751..7ebf8c9 100644
--- a/book-common/pom.xml
+++ b/book-common/pom.xml
@@ -102,6 +102,14 @@
3.1.270
+
+
+ com.qcloud
+ vod_api
+ 2.1.5
+
+
+
io.minio
minio
diff --git a/book-common/src/main/java/com/imooc/utils/QcCloud.java b/book-common/src/main/java/com/imooc/utils/QcCloud.java
new file mode 100644
index 0000000..a64f116
--- /dev/null
+++ b/book-common/src/main/java/com/imooc/utils/QcCloud.java
@@ -0,0 +1,66 @@
+package com.imooc.utils;
+import com.qcloud.vod.model.VodUploadResponse;
+import com.qcloud.vod.VodUploadClient;
+import com.qcloud.vod.model.VodUploadRequest;
+
+import org.apache.commons.io.FilenameUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.UUID;
+
+
+
+@Component
+public class QcCloud {
+ @Autowired
+ private TencentCloudProperties tencentCloudProperties;
+ public String getSecretId() {
+ return tencentCloudProperties.getSecretId();
+ }
+
+ public String getSecretKey() {
+ return tencentCloudProperties.getSecretKey();
+ }
+
+ public String getRegion() {
+ return "ap-guangzhou";// 腾讯云 VOD 和 COS 使用相同区域
+ }
+
+
+
+ public String uploadViaTempFile(MultipartFile file) throws Exception {
+ // 1. 获取文件扩展名
+ String extension = FilenameUtils.getExtension(file.getOriginalFilename());
+
+ // 2. 获取当前时间戳和 UUID 作为文件名
+ String timestamp = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
+ String uniqueFilename = "vod-" + timestamp + "-" + UUID.randomUUID().toString().replace("-", "").substring(8) + "." + extension;
+
+ // 3. 创建临时文件并转存
+ Path tempFile = Files.createTempFile("vod-", "-" + uniqueFilename); // 创建临时文件
+ file.transferTo(tempFile.toFile()); // 将文件上传内容写入临时文件
+
+ System.out.println("文件临时路径: " + tempFile.toString());
+
+ try {
+ VodUploadClient client = new VodUploadClient(getSecretId(), getSecretKey());
+ VodUploadRequest request = new VodUploadRequest();
+ request.setMediaFilePath(tempFile.toString()); // 指定本地文件路径
+ request.setProcedure("视频处理"); // 智能审核+水印
+ // 4. 上传文件
+ VodUploadResponse response = client.upload(getRegion(), request);
+ return response.getFileId(); // 返回腾讯云 VOD 的 id
+ } finally {
+ // 5. 删除临时文件
+ Files.deleteIfExists(tempFile);
+ }
+ }
+}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index a649f5d..5ebd41a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -54,7 +54,6 @@
-->
-
org.springframework.cloud