From 25b7ce0742103b9cbaf21aae06c2cf12d4872764 Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期三, 13 九月 2023 11:11:05 +0800
Subject: [PATCH] 视频上传
---
ycl-common/src/main/java/com/ycl/controller/FileController.java | 17 +++--
ycl-platform/src/main/java/com/ycl/common/constant/DingConst.java | 7 ++
ycl-common/src/main/java/com/ycl/service/oss/impl/OssServiceImpl.java | 42 ++++++++++++--
ycl-platform/src/main/java/com/ycl/config/DingConfig.java | 3
ycl-platform/src/main/java/com/ycl/controller/dingding/DingController.java | 52 ++++++++++++++++-
ycl-common/src/main/java/com/ycl/service/oss/OssService.java | 2
6 files changed, 105 insertions(+), 18 deletions(-)
diff --git a/ycl-common/src/main/java/com/ycl/controller/FileController.java b/ycl-common/src/main/java/com/ycl/controller/FileController.java
index 6f4c2f7..25c2a1e 100644
--- a/ycl-common/src/main/java/com/ycl/controller/FileController.java
+++ b/ycl-common/src/main/java/com/ycl/controller/FileController.java
@@ -1,18 +1,14 @@
package com.ycl.controller;
import com.ycl.api.CommonResult;
-import com.ycl.dto.media.Media;
-import com.ycl.dto.media.PictureZoomParameter;
import com.ycl.service.oss.OssService;
-import com.ycl.utils.AliyunUtils;
-import com.ycl.utils.MediaFileUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
-
-import java.io.InputStream;
@RestController
@Api(tags = "鏂囦欢涓婁紶")
@@ -75,5 +71,12 @@
return CommonResult.failed("fail!");
}
+ @ApiOperation(value = "涓婁紶瑙嗛")
+ @PostMapping("/video")
+ public CommonResult<String> uploadVideo(MultipartFile file) {
+ String url = ossService.uploadVideo(file);
+ return CommonResult.success(url, "ok");
+ }
+
}
diff --git a/ycl-common/src/main/java/com/ycl/service/oss/OssService.java b/ycl-common/src/main/java/com/ycl/service/oss/OssService.java
index 65371d7..b24e719 100644
--- a/ycl-common/src/main/java/com/ycl/service/oss/OssService.java
+++ b/ycl-common/src/main/java/com/ycl/service/oss/OssService.java
@@ -20,4 +20,6 @@
boolean deleteImages(String fileUrl);
String uploadImages(InputStream inputStream, String ext);
+
+ String uploadVideo(MultipartFile file);
}
diff --git a/ycl-common/src/main/java/com/ycl/service/oss/impl/OssServiceImpl.java b/ycl-common/src/main/java/com/ycl/service/oss/impl/OssServiceImpl.java
index e9fea7d..4d42a27 100644
--- a/ycl-common/src/main/java/com/ycl/service/oss/impl/OssServiceImpl.java
+++ b/ycl-common/src/main/java/com/ycl/service/oss/impl/OssServiceImpl.java
@@ -1,9 +1,7 @@
package com.ycl.service.oss.impl;
-import com.aliyun.oss.ClientBuilderConfiguration;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
-import com.aliyun.oss.common.comm.Protocol;
import com.aliyun.oss.model.ObjectMetadata;
import com.ycl.service.oss.OssService;
import com.ycl.utils.ConstantPropertiesUtils;
@@ -14,13 +12,9 @@
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
-import java.net.HttpURLConnection;
-import java.net.URL;
import java.time.LocalDate;
-import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
-import java.util.UUID;
@Service
public class OssServiceImpl implements OssService {
@@ -144,6 +138,42 @@
}
}
+ @Override
+ public String uploadVideo(MultipartFile file) {
+ if (file == null) {
+ return "涓婁紶瑙嗛涓虹┖";
+ }
+ String endpoint = ConstantPropertiesUtils.END_POINT;
+ String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;
+ String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;
+ String bucketName = ConstantPropertiesUtils.BUCKET_NAME;
+ // 鍒涘缓OSSClient瀹炰緥
+ OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
+ // 涓婁紶鏂囦欢娴�
+ try {
+ // 鑾峰彇鏂囦欢鐨勫悕绉�
+ String fileName = "sczf/" + file.getOriginalFilename();
+ ObjectMetadata objectMetadata = new ObjectMetadata();
+ objectMetadata.setContentType(getcontentType(fileName.substring(fileName.lastIndexOf("."))));
+ // 璋冪敤oss鐨勬柟娉曞疄鐜伴暱浼�
+ // 绗竴涓弬鏁� bucketName
+ // 绗簩涓弬鏁� 涓婁紶鍒皁ss鐨勬枃浠惰矾寰勫拰鏂囦欢鍚嶇О
+ ossClient.putObject(bucketName, fileName, new ByteArrayInputStream(file.getBytes()), objectMetadata);
+ // 鍏抽棴OSSClient銆�
+ ossClient.shutdown();
+ // 鎶婁笂浼犵殑鏂囦欢璺緞杩斿洖 锛堟墜鍔ㄦ嫾鎺ワ級
+ // 杩欓噷璁剧疆鍥剧墖鏈夋晥鏃堕棿 鎴戣缃簡30骞�
+ Date expiration = new Date(System.currentTimeMillis() + (long) 946080000 * 1000);
+ String url = ossClient.generatePresignedUrl(bucketName, fileName, expiration).toString();
+
+ return url;
+ } catch (Exception e) {
+ System.out.println("uploadImages涓婁紶瑙嗛澶辫触锛�");
+ // e.printStackTrace();
+ return null;
+ }
+ }
+
public static String getcontentType(String FilenameExtension) {
if (FilenameExtension.equalsIgnoreCase(".mp4")||FilenameExtension.equalsIgnoreCase(".mov")) {
return "video/mp4";
diff --git a/ycl-platform/src/main/java/com/ycl/common/constant/DingConst.java b/ycl-platform/src/main/java/com/ycl/common/constant/DingConst.java
index f6c7ff1..1dfc0fb 100644
--- a/ycl-platform/src/main/java/com/ycl/common/constant/DingConst.java
+++ b/ycl-platform/src/main/java/com/ycl/common/constant/DingConst.java
@@ -87,4 +87,11 @@
*/
String SEND_DING_WORK_LINK = "dingtalkind://dingtalkclient/page/link?url=";
+ /**
+ * 鑾峰彇瑙嗛
+ */
+ String GET_VIDEO="/media/video";
+
+
+
}
diff --git a/ycl-platform/src/main/java/com/ycl/config/DingConfig.java b/ycl-platform/src/main/java/com/ycl/config/DingConfig.java
index 88630e5..f62c9ae 100644
--- a/ycl-platform/src/main/java/com/ycl/config/DingConfig.java
+++ b/ycl-platform/src/main/java/com/ycl/config/DingConfig.java
@@ -6,8 +6,6 @@
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
-import static com.ycl.common.constant.DingConst.*;
-
@Data
@Component
@ConfigurationProperties("zzding")
@@ -17,6 +15,7 @@
private String domainName;
private String protocal;
private String tenantId;
+ private String mediaId;
@Bean
public ExecutableClient executableClient() {
diff --git a/ycl-platform/src/main/java/com/ycl/controller/dingding/DingController.java b/ycl-platform/src/main/java/com/ycl/controller/dingding/DingController.java
index f8f7622..05f98c7 100644
--- a/ycl-platform/src/main/java/com/ycl/controller/dingding/DingController.java
+++ b/ycl-platform/src/main/java/com/ycl/controller/dingding/DingController.java
@@ -19,18 +19,23 @@
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
+import org.apache.http.HttpEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import static com.ycl.common.constant.DingConst.GET_TIKER;
-import static com.ycl.common.constant.DingConst.GET_TOKEN;
+import static com.ycl.common.constant.DingConst.*;
@RestController
@RequestMapping("/ding")
@@ -137,7 +142,6 @@
@GetMapping("/addressBook")
public CommonResult<List<AddressBookVO>> getAddressBook() {
AdminUserDetails user = (AdminUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
-
return CommonResult.success(dingService.getAddressBook(user.getUserId()));
}
@@ -165,5 +169,47 @@
return CommonResult.success(bookRemarkService.updateRemark(user, userId, remark));
}
+ private String getVideo(String accToken) {
+ CloseableHttpResponse response = null;
+ //璋冪敤API
+ GetClient getClient = executableClient.newGetClient(GET_VIDEO);
+ //璁剧疆鍙傛暟
+ try {
+ if (ObjectUtil.isNotNull(accToken)) {
+ getClient.addParameter("accessToken", accToken);
+ getClient.addParameter("mediaId", dingConfig.getMediaId());
+// String result = getClient.get();
+// return parsingResult(result);
+ response = getClient.getB();
+ HttpEntity entity = response.getEntity();
+ InputStream is = entity.getContent();
+ File voice = new File("/Users/video/log1.xlsx");
+ OutputStream fos = new FileOutputStream(voice);
+ int cache = 10 * 1024;
+ byte[] buffer = new byte[cache];
+ int ch = 0;
+ while ((ch = is.read(buffer)) != -1) {
+ fos.write(buffer, 0, ch);
+ }
+ is.close();
+ fos.flush();
+ fos.close();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }finally {
+ if (response != null) {
+ try {
+ //鐗瑰埆鎻愰啋锛氶渶瑕佽皟鐢╮esponse鐨刢lose鏂规硶鍏抽棴缃戠粶杩炴帴锛侊紒锛�
+ response.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ return null;
+ }
+
+
}
--
Gitblit v1.8.0