From 92027c9960c8e4e8d84db11c2c422254a5b7d38c Mon Sep 17 00:00:00 2001 From: Administrator <2863138610@qq.com> Date: 星期二, 06 十二月 2022 16:00:03 +0800 Subject: [PATCH] 华为云obs上传 --- src/main/java/com/qxueyou/scc/admin/progress/service/IProgressService.java | 22 +- src/main/java/com/qxueyou/scc/sys/utils/Image2Binary.java | 128 ++++++++++++++ src/main/java/com/qxueyou/scc/admin/classes/service/IClassLectureService.java | 170 +++++++++--------- src/main/java/com/qxueyou/scc/admin/progress/service/impl/lecture/LectureDocProgressService.java | 2 src/main/java/com/qxueyou/scc/admin/progress/service/impl/item/LectureProgressService.java | 2 src/main/java/com/qxueyou/scc/controller/HweiYunOBSController.java | 26 +- src/main/java/com/qxueyou/scc/teach/res/service/impl/FileService.java | 41 ++++ src/main/java/com/qxueyou/scc/teach/res/service/HweiYunOBSService.java | 19 +- src/main/java/com/qxueyou/scc/admin/progress/service/impl/lecture/LectureCommonProgressService.java | 6 src/main/java/com/qxueyou/scc/admin/progress/service/impl/ProgressService.java | 4 src/main/java/com/qxueyou/scc/sys/utils/VideoUtil.java | 18 + src/main/java/com/qxueyou/scc/teach/res/service/impl/HweiYunOBSServiceImpl.java | 41 +++- src/main/java/com/qxueyou/scc/admin/progress/service/impl/lecture/LectureVideoProgressService.java | 2 src/main/java/com/qxueyou/scc/admin/progress/service/IDetailProgressService.java | 14 src/main/java/com/qxueyou/scc/sys/utils/AudioUtil.java | 4 src/main/java/com/qxueyou/scc/media/model/MediaVideo.java | 2 src/main/java/com/qxueyou/scc/teach/res/service/impl/resitem/ResItemVideoService.java | 8 17 files changed, 348 insertions(+), 161 deletions(-) diff --git a/src/main/java/com/qxueyou/scc/admin/classes/service/IClassLectureService.java b/src/main/java/com/qxueyou/scc/admin/classes/service/IClassLectureService.java index 536751c..f2162a9 100644 --- a/src/main/java/com/qxueyou/scc/admin/classes/service/IClassLectureService.java +++ b/src/main/java/com/qxueyou/scc/admin/classes/service/IClassLectureService.java @@ -13,98 +13,98 @@ public interface IClassLectureService { /** - * 新增章节文件夹 + * 鏂板绔犺妭鏂囦欢澶� * * @param parentChapterId - * 父级章节文件夹id + * 鐖剁骇绔犺妭鏂囦欢澶筰d * @param name - * 文件夹名称 - * @return 上传结果:{"success":true,msg:"success",attrs:{"chapterId","90023afwe32300fee23"}},若成功,则返回ChapterId + * 鏂囦欢澶瑰悕绉� + * @return 涓婁紶缁撴灉:{"success":true,msg:"success",attrs:{"chapterId","90023afwe32300fee23"}},鑻ユ垚鍔燂紝鍒欒繑鍥濩hapterId */ Result addChapter(String parentChapterId, String name); /** - * 返回下级章节文件夹列表,如果 + * 杩斿洖涓嬬骇绔犺妭鏂囦欢澶瑰垪琛�,濡傛灉 * * @param classId - * 班级id + * 鐝骇id * @param parentChapterId - * 父级章节文件夹id - * @return 返回章节列表 + * 鐖剁骇绔犺妭鏂囦欢澶筰d + * @return 杩斿洖绔犺妭鍒楄〃 */ List<SubjectProgressTreeV> getChapterTreeVList(String classId, String parentChapterId); /** - * 课件列表搜索 + * 璇句欢鍒楄〃鎼滅储 * * @param chapterId - * 章节id + * 绔犺妭id * @param keyword - * 关键字 + * 鍏抽敭瀛� * @param pageSize - * 页码 + * 椤电爜 * @param pageNum - * 每页显示数据条数 + * 姣忛〉鏄剧ず鏁版嵁鏉℃暟 * @param type - * 类型 + * 绫诲瀷 * @return */ List<MyLectureV> listLectureV(String learnerId, String chapterId, String keyword, Integer pageSize, Integer pageNum, String type); /** - * 修改章节文件夹 + * 淇敼绔犺妭鏂囦欢澶� * * @param chapterId - * 文件夹id + * 鏂囦欢澶筰d * @param name - * 名称 - * @return 上传结果:{"success":true,msg:"success",attrs:{}} + * 鍚嶇О + * @return 涓婁紶缁撴灉:{"success":true,msg:"success",attrs:{}} */ Result updateChapter(String chapterId, String name); /** - * 删除章节文件夹 + * 鍒犻櫎绔犺妭鏂囦欢澶� * * @param chapterIds - * 章节文件夹id数组 - * @return 上传结果:{"success":true,msg:"success",attrs:{}} + * 绔犺妭鏂囦欢澶筰d鏁扮粍 + * @return 涓婁紶缁撴灉:{"success":true,msg:"success",attrs:{}} */ Result deleteChapter(String[] chapterIds); /** - * 新增课件 + * 鏂板璇句欢 * * @param chapterId - * 章节id + * 绔犺妭id * @param resId - * 资源id - * @return 上传结果:{"success":true,msg:"success",attrs:{"chapterId","90023afwe32300fee23"}},若成功,则返回chapterId + * 璧勬簮id + * @return 涓婁紶缁撴灉:{"success":true,msg:"success",attrs:{"chapterId","90023afwe32300fee23"}},鑻ユ垚鍔燂紝鍒欒繑鍥瀋hapterId */ Result addClsLecture(String chapterId, String resId); /** - * 修改课件 + * 淇敼璇句欢 * * @param lectureId - * 课件id + * 璇句欢id * @param resId - * 资源id - * @return 上传结果:{"success":true,msg:"success",attrs:{}} + * 璧勬簮id + * @return 涓婁紶缁撴灉:{"success":true,msg:"success",attrs:{}} */ Result updateLecture(String lectureId, String resId); /** - * 删除课件 + * 鍒犻櫎璇句欢 * * @param lectureIds - * 课件id数组 - * @return 上传结果:{"success":true,msg:"success",attrs:{}} + * 璇句欢id鏁扮粍 + * @return 涓婁紶缁撴灉:{"success":true,msg:"success",attrs:{}} */ Result deleteLecture(String[] lectureIds); /** - * 课件学习进度提交 + * 璇句欢瀛︿範杩涘害鎻愪氦 * * @param clsLectureId * @param from @@ -114,76 +114,76 @@ Result doStudy(String clsLectureId, Double from, Double to); /** - * 复制课件 + * 澶嶅埗璇句欢 * * @param lectureId - * 课件id + * 璇句欢id * @param destChapterId - * 目标章节id + * 鐩爣绔犺妭id * @param name - * 课件名称 - * @return 上传结果:{"success":true,msg:"success",attrs:{}} + * 璇句欢鍚嶇О + * @return 涓婁紶缁撴灉:{"success":true,msg:"success",attrs:{}} */ Result doCopyLecture(String lectureId, String destChapterId, String name); /** - * 移动课件 + * 绉诲姩璇句欢 * * @param lectureId - * 课件id + * 璇句欢id * @param destChapterId - * 目标章节id + * 鐩爣绔犺妭id * @param name - * 课件名称 - * @return 上传结果:{"success":true,msg:"success",attrs:{}} + * 璇句欢鍚嶇О + * @return 涓婁紶缁撴灉:{"success":true,msg:"success",attrs:{}} */ Result doMoveLecture(String lectureId, String destChapterId, String name); /** - * 课件列表搜索 + * 璇句欢鍒楄〃鎼滅储 * * @param chapterId - * 章节id + * 绔犺妭id * @param keyword - * 关键字 + * 鍏抽敭瀛� * @param pageNo - * 页码 + * 椤电爜 * @param pageNum - * 每页显示数据条数 + * 姣忛〉鏄剧ず鏁版嵁鏉℃暟 * @param type - * 类型 + * 绫诲瀷 * @return */ List<ClsSubjectLecture> listLecture(String chapterId, String keyword, Integer pageNo, Integer pageNum, String type, String classId); /** - * 课件列表 + * 璇句欢鍒楄〃 * * @param classId - * 章节id + * 绔犺妭id * @return */ List<ClsSubjectLecture> listLecture(String classId); /** - * 读取课件真实文件访问路径 + * 璇诲彇璇句欢鐪熷疄鏂囦欢璁块棶璺緞 * * @param lectureId - * 课件id数组 + * 璇句欢id鏁扮粍 * @param attribute - * 课件附加属性 - * @return 上传结果:{"success":true,msg:"success",attrs:{"type":"",path:""}} + * 璇句欢闄勫姞灞炴�� + * @return 涓婁紶缁撴灉:{"success":true,msg:"success",attrs:{"type":"",path:""}} */ Result readLectureAccessPath(String lectureId, String attribute); /** - * 通过id读取班级的课件对象 + * 閫氳繃id璇诲彇鐝骇鐨勮浠跺璞� */ ClsSubjectLecture readClsLecture(String id); /** - * 读取课件目录 + * 璇诲彇璇句欢鐩綍 * * @param chapterId * @return @@ -191,58 +191,58 @@ ClsSubjectChapter readChapter(String chapterId); /** - * 课件列表大小 + * 璇句欢鍒楄〃澶у皬 * * @param chapterId - * 章节id + * 绔犺妭id * @param keyword - * 关键字 + * 鍏抽敭瀛� * @param type - * 类型 + * 绫诲瀷 * @return */ int listLectureCount(String chapterId, String keyword, String type); /** - * 返回下级章节文件夹列表 + * 杩斿洖涓嬬骇绔犺妭鏂囦欢澶瑰垪琛� * * @param classId - * 班级id + * 鐝骇id * @param classId - * 课程id + * 璇剧▼id * @param parentChapterId - * 父级章节文件夹id - * @return 返回章节列表 + * 鐖剁骇绔犺妭鏂囦欢澶筰d + * @return 杩斿洖绔犺妭鍒楄〃 */ List<ClsSubjectChapter> getListChapter(String classId,String subjectId, String parentChapterId); /** - * 返回下级章节文件夹列表,如果 + * 杩斿洖涓嬬骇绔犺妭鏂囦欢澶瑰垪琛�,濡傛灉 * * @param classId - * 班级id + * 鐝骇id * @param subjectId - * 课程id + * 璇剧▼id * @param parentChapterId - * 父级章节文件夹id - * @return 返回章节列表 + * 鐖剁骇绔犺妭鏂囦欢澶筰d + * @return 杩斿洖绔犺妭鍒楄〃 */ List<ClsSubjectChapter> doGetListChapter(String classId,String subjectId, String parentChapterId); /** - * 把课程上的课件拷贝到班级课程 + * 鎶婅绋嬩笂鐨勮浠舵嫹璐濆埌鐝骇璇剧▼ * * @param subjectId - * 课程id + * 璇剧▼id * @param classId - * 班级id + * 鐝骇id * @return */ Result doCopyLecturesToClass(String origSubjectId, String subjectId, String classId); /** - * 清理所有的班级课件 + * 娓呯悊鎵�鏈夌殑鐝骇璇句欢 * @param subjectId * @param classId * @return @@ -250,7 +250,7 @@ Result doClearLecturesToClass(String subjectId, String classId); /** - * 根据课程查询课件 + * 鏍规嵁璇剧▼鏌ヨ璇句欢 * * @param subjectId * @param type @@ -260,7 +260,7 @@ List<Map<String, Object>> listLectureBySubject(String subjectId, String type, String classId); /** - * 查询班级内的课件和课程 + * 鏌ヨ鐝骇鍐呯殑璇句欢鍜岃绋� * * @param classId * @return @@ -268,7 +268,7 @@ Result listSubjectLecture(String classId, String sort, Pager pager); /** - * 获取课程下的课件 + * 鑾峰彇璇剧▼涓嬬殑璇句欢 * * @param subjectId * @param type @@ -277,7 +277,7 @@ public Map<String,Object> listLectureBySubjectOrderCreateTime(String subjectId, String classId, String sort, Pager pager); /** - * 学员端获取课程下课件 + * 瀛﹀憳绔幏鍙栬绋嬩笅璇句欢 * * @param subjectId * @param type @@ -286,7 +286,7 @@ public List<Map<String, Object>> listStuLectureBySubject(String subjectId, String classId); /** - * 学员端获取课程下课件数量 + * 瀛﹀憳绔幏鍙栬绋嬩笅璇句欢鏁伴噺 * * @param subjectId * @param type @@ -295,7 +295,7 @@ public long stuLectureCountBySubject(String subjectId, String classId); /** - * 获取章节下的课件 + * 鑾峰彇绔犺妭涓嬬殑璇句欢 * * @param chapterLst * @param lectures @@ -304,7 +304,7 @@ public List<ClsSubjectChapter> getChapterLectures(List<ClsSubjectChapter> chapterLst, List<Map<String, Object>> lectures); /** - * 获取文档页码 + * 鑾峰彇鏂囨。椤电爜 * * @param resItemId * @return @@ -312,7 +312,7 @@ public int readDocPageCount(String resItemId); /** - * 公开课课件 + * 鍏紑璇捐浠� * * @param subjectId * @param classId @@ -323,7 +323,7 @@ public Map<String,Object> listOpenLectureBySubjectOrderCreateTime(String subjectId, String sort, Pager pager); /** - * 课件按目录分类 + * 璇句欢鎸夌洰褰曞垎绫� * * @param classId * @param subjectId @@ -331,4 +331,4 @@ * @return */ public Result coursewareChapterList(String classId,String subjectId, String type); -} \ No newline at end of file +} diff --git a/src/main/java/com/qxueyou/scc/admin/progress/service/IDetailProgressService.java b/src/main/java/com/qxueyou/scc/admin/progress/service/IDetailProgressService.java index 9ca8835..2eb8b0a 100644 --- a/src/main/java/com/qxueyou/scc/admin/progress/service/IDetailProgressService.java +++ b/src/main/java/com/qxueyou/scc/admin/progress/service/IDetailProgressService.java @@ -5,18 +5,18 @@ public interface IDetailProgressService { /** - * 新增学习记录 - * @param type 进度类型 - * @param targetId 学习目标id - * @param learnerId 学习者id - * @param start 学习开始位置 - * @param end 学习结束位置 + * 鏂板瀛︿範璁板綍 + * @param type 杩涘害绫诲瀷 + * @param targetId 瀛︿範鐩爣id + * @param learnerId 瀛︿範鑰卛d + * @param start 瀛︿範寮�濮嬩綅缃� + * @param end 瀛︿範缁撴潫浣嶇疆 * @return */ Result addProgress(String targetId,String learnerId,int start,int end); /** - * 返回进度类型 + * 杩斿洖杩涘害绫诲瀷 * @return */ String getType(); diff --git a/src/main/java/com/qxueyou/scc/admin/progress/service/IProgressService.java b/src/main/java/com/qxueyou/scc/admin/progress/service/IProgressService.java index fca52f1..4784151 100644 --- a/src/main/java/com/qxueyou/scc/admin/progress/service/IProgressService.java +++ b/src/main/java/com/qxueyou/scc/admin/progress/service/IProgressService.java @@ -9,43 +9,43 @@ public interface IProgressService { /** - * 查询学习进度 + * 鏌ヨ瀛︿範杩涘害 * * @return */ List<Progress> query(String type, String learnerId, List<String> targetId); /** - * 查询学习进度 + * 鏌ヨ瀛︿範杩涘害 * * @return */ List<Progress> query(String type, List<String> learnerId, String targetId); /** - * 查询学习记录 + * 鏌ヨ瀛︿範璁板綍 * * @param type - * 进度类型 + * 杩涘害绫诲瀷 * @param targetId - * 学习目标id + * 瀛︿範鐩爣id * @param learnerId - * 学习者id + * 瀛︿範鑰卛d * @return */ Progress query(String type, String targetId, String learnerId); /** - * 新增学习记录 + * 鏂板瀛︿範璁板綍 * * @param type - * 进度类型 + * 杩涘害绫诲瀷 * @param targetId - * 学习目标id + * 瀛︿範鐩爣id * @param start - * 学习开始位置 + * 瀛︿範寮�濮嬩綅缃� * @param end - * 学习结束位置 + * 瀛︿範缁撴潫浣嶇疆 * @return */ Result addProgress(String type, String targetId, int start, int end, String userId); diff --git a/src/main/java/com/qxueyou/scc/admin/progress/service/impl/ProgressService.java b/src/main/java/com/qxueyou/scc/admin/progress/service/impl/ProgressService.java index 3089db1..eb6ecc7 100644 --- a/src/main/java/com/qxueyou/scc/admin/progress/service/impl/ProgressService.java +++ b/src/main/java/com/qxueyou/scc/admin/progress/service/impl/ProgressService.java @@ -40,7 +40,7 @@ ProgressDAO dao; /** - * 各类型课件进度服务实现 + * 鍚勭被鍨嬭浠惰繘搴︽湇鍔″疄鐜� */ private Map<String, IDetailProgressService> resItemServiceMap = new HashMap<String, IDetailProgressService>(6); @@ -119,7 +119,7 @@ save(progress); } catch (Exception e) { - log.error("保存异常", e); + log.error("淇濆瓨寮傚父", e); return; } diff --git a/src/main/java/com/qxueyou/scc/admin/progress/service/impl/item/LectureProgressService.java b/src/main/java/com/qxueyou/scc/admin/progress/service/impl/item/LectureProgressService.java index 5714161..5cd277a 100644 --- a/src/main/java/com/qxueyou/scc/admin/progress/service/impl/item/LectureProgressService.java +++ b/src/main/java/com/qxueyou/scc/admin/progress/service/impl/item/LectureProgressService.java @@ -24,7 +24,7 @@ IClassLectureService lectureService; /** - * 各类型课件进度服务实现 + * 鍚勭被鍨嬭浠惰繘搴︽湇鍔″疄鐜� */ private Map<String, IDetailProgressService> resItemServiceMap = new HashMap<String, IDetailProgressService>(6); diff --git a/src/main/java/com/qxueyou/scc/admin/progress/service/impl/lecture/LectureCommonProgressService.java b/src/main/java/com/qxueyou/scc/admin/progress/service/impl/lecture/LectureCommonProgressService.java index cc53f58..81d8722 100644 --- a/src/main/java/com/qxueyou/scc/admin/progress/service/impl/lecture/LectureCommonProgressService.java +++ b/src/main/java/com/qxueyou/scc/admin/progress/service/impl/lecture/LectureCommonProgressService.java @@ -57,7 +57,7 @@ updateProgress(targetId, p, sum); } - //保存学习记录明细 + //淇濆瓨瀛︿範璁板綍鏄庣粏 this.saveProgressDetail(start, end, targetId, p.getProgressId(), learnerId); classLectureService.updateLecturetime(targetId); @@ -77,7 +77,7 @@ } /** - * 保存学习记录明细 + * 淇濆瓨瀛︿範璁板綍鏄庣粏 * * @param start * @param end @@ -104,7 +104,7 @@ } /** - * 获取进度百分比 + * 鑾峰彇杩涘害鐧惧垎姣� * * @param targetId * @param sum diff --git a/src/main/java/com/qxueyou/scc/admin/progress/service/impl/lecture/LectureDocProgressService.java b/src/main/java/com/qxueyou/scc/admin/progress/service/impl/lecture/LectureDocProgressService.java index bce7df5..6d775cd 100644 --- a/src/main/java/com/qxueyou/scc/admin/progress/service/impl/lecture/LectureDocProgressService.java +++ b/src/main/java/com/qxueyou/scc/admin/progress/service/impl/lecture/LectureDocProgressService.java @@ -25,7 +25,7 @@ } /** - * 获取进度百分比 + * 鑾峰彇杩涘害鐧惧垎姣� * * @param targetId * @param sum diff --git a/src/main/java/com/qxueyou/scc/admin/progress/service/impl/lecture/LectureVideoProgressService.java b/src/main/java/com/qxueyou/scc/admin/progress/service/impl/lecture/LectureVideoProgressService.java index 2eb8d2d..66ba3ff 100644 --- a/src/main/java/com/qxueyou/scc/admin/progress/service/impl/lecture/LectureVideoProgressService.java +++ b/src/main/java/com/qxueyou/scc/admin/progress/service/impl/lecture/LectureVideoProgressService.java @@ -25,7 +25,7 @@ } /** - * 获取进度百分比 + * 鑾峰彇杩涘害鐧惧垎姣� * * @param targetId * @param sum diff --git a/src/main/java/com/qxueyou/scc/controller/HweiYunOBSController.java b/src/main/java/com/qxueyou/scc/controller/HweiYunOBSController.java index 6bf662a..861f990 100644 --- a/src/main/java/com/qxueyou/scc/controller/HweiYunOBSController.java +++ b/src/main/java/com/qxueyou/scc/controller/HweiYunOBSController.java @@ -1,5 +1,5 @@ package com.qxueyou.scc.controller; - + import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.ArrayUtil; @@ -7,12 +7,14 @@ //import cn.hutool.core.io.FileUtil; import com.obs.services.exception.ObsException; +import com.obs.services.model.PutObjectResult; +import com.qxueyou.scc.base.model.FileMeta; import com.qxueyou.scc.base.model.Result; import com.qxueyou.scc.teach.res.service.HweiYunOBSService; import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; - + import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -21,7 +23,7 @@ import java.io.InputStream; import java.net.URLEncoder; import java.util.List; - + /** * @ClassName: ObsController * @Description: OBS鏈嶅姟鍣–ontroller @@ -30,12 +32,12 @@ * @Version: 1.0 */ @RestController -@RequestMapping({ "file" })// @RequestMapping("/file") +@RequestMapping("/file")// @RequestMapping("/file") public class HweiYunOBSController { - + @Resource private HweiYunOBSService hweiYunOBSService; - + @RequestMapping(value = "upload", method = RequestMethod.POST) public Result save(@RequestParam(value = "file", required = false) MultipartFile file) { @@ -45,11 +47,11 @@ // if (FileUtil.isEmpty(file)) { // return new Result(false,"鏂囦欢涓虹┖"); // } - final String test = hweiYunOBSService.fileUpload(file, file.getOriginalFilename()); + final List<FileMeta> test = hweiYunOBSService.fileUpload(file, file.getOriginalFilename()); // return ResponseVO.ok("鎵ц鎴愬姛",test); return new Result(true,"success",test); } - + @RequestMapping(value = "delete", method = RequestMethod.POST) public Result delete(@RequestParam(value = "fileName", required = false) String fileName) { if (StrUtil.isEmpty(fileName)) { @@ -58,7 +60,7 @@ final boolean delete = hweiYunOBSService.delete(fileName); return delete?new Result(true,"success"):new Result(false,"鍒犻櫎澶辫触"); } - + @RequestMapping(value = "deletes", method = RequestMethod.POST) //@RequestParam 鑾峰彇List锛屾暟缁勫垯涓嶉渶瑕� public Result delete(@RequestParam("fileNames") List<String> fileNames) { @@ -68,8 +70,8 @@ final boolean delete = hweiYunOBSService.delete(fileNames); return delete?new Result(true,"success"):new Result(false,"鍒犻櫎澶辫触"); } - - + + @RequestMapping(value = "download", method = RequestMethod.POST) public Result download(HttpServletRequest request, HttpServletResponse response, @RequestParam(value = "fileName", required = false) String fileName) { if (StrUtil.isEmpty(fileName)) { @@ -104,4 +106,4 @@ return new Result(false); } } -} \ No newline at end of file +} diff --git a/src/main/java/com/qxueyou/scc/media/model/MediaVideo.java b/src/main/java/com/qxueyou/scc/media/model/MediaVideo.java index 8d6d24b..f7616ef 100644 --- a/src/main/java/com/qxueyou/scc/media/model/MediaVideo.java +++ b/src/main/java/com/qxueyou/scc/media/model/MediaVideo.java @@ -764,4 +764,4 @@ public void setM3u8KeyPath(String m3u8KeyPath) { this.m3u8KeyPath = m3u8KeyPath; } -} \ No newline at end of file +} diff --git a/src/main/java/com/qxueyou/scc/sys/utils/AudioUtil.java b/src/main/java/com/qxueyou/scc/sys/utils/AudioUtil.java index 114a903..5dc8d93 100644 --- a/src/main/java/com/qxueyou/scc/sys/utils/AudioUtil.java +++ b/src/main/java/com/qxueyou/scc/sys/utils/AudioUtil.java @@ -46,7 +46,9 @@ public static Float getMp3Duration(String filePath){ try { - File mp3File = new File(filePath); + File file = File.createTempFile("temp", ".mp3"); //鍒涘缓涓存椂鏂囦欢 + Image2Binary.toBDFile(filePath,file.getCanonicalPath()); + File mp3File = new File(file.getPath()); MP3File f = (MP3File) AudioFileIO.read(mp3File); MP3AudioHeader audioHeader = (MP3AudioHeader)f.getAudioHeader(); return Float.parseFloat(audioHeader.getTrackLength()+""); diff --git a/src/main/java/com/qxueyou/scc/sys/utils/Image2Binary.java b/src/main/java/com/qxueyou/scc/sys/utils/Image2Binary.java new file mode 100644 index 0000000..dcc51a4 --- /dev/null +++ b/src/main/java/com/qxueyou/scc/sys/utils/Image2Binary.java @@ -0,0 +1,128 @@ +package com.qxueyou.scc.sys.utils; + +import java.io.ByteArrayOutputStream; +import java.io.DataInputStream; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.UnknownHostException; + +import org.apache.commons.codec.digest.DigestUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +public class Image2Binary +{ + private static Logger log = LoggerFactory.getLogger(Image2Binary.class); + + public static byte[] toByteArray(InputStream in) throws IOException { + + ByteArrayOutputStream out=new ByteArrayOutputStream(); + byte[] buffer=new byte[1024*4]; + int n=0; + while ( (n=in.read(buffer)) !=-1) { + out.write(buffer,0,n); + } + return out.toByteArray(); + } + + /** + * 缃戠粶鏂囦欢杞崲涓篵yte浜岃繘鍒� + * @Title: toByteArray + * @Description: TODO(杩欓噷鐢ㄤ竴鍙ヨ瘽鎻忚堪杩欎釜鏂规硶鐨勪綔鐢�) + * @param @param url + * @param @return + * @param @throws IOException 璁惧畾鏂囦欢 + * @return byte[] 杩斿洖绫诲瀷 + * @throws + */ + public static byte[] toByteArray(String urlStr) throws IOException { + URL url = new URL(urlStr); + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + DataInputStream in = new DataInputStream(conn.getInputStream()); + ByteArrayOutputStream out=new ByteArrayOutputStream(); + byte[] buffer=new byte[1024*4]; + int n=0; + while ( (n=in.read(buffer)) !=-1) { + out.write(buffer,0,n); + } + return out.toByteArray(); + } + + /** + * @throws IOException + * @throws MalformedURLException + * 缃戠粶鏂囦欢杞崲涓烘湰鍦版枃浠� + * @Title: toByteArray + * @Description: TODO(杩欓噷鐢ㄤ竴鍙ヨ瘽鎻忚堪杩欎釜鏂规硶鐨勪綔鐢�) + * @param @param url + * @param @return + * @param @throws IOException 璁惧畾鏂囦欢 + * @return byte[] 杩斿洖绫诲瀷 + * @throws + */ + public static void toBDFile(String urlStr, String bdUrl) throws IOException,UnknownHostException{ + URL url = new URL(urlStr); + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + DataInputStream in = new DataInputStream(conn.getInputStream()); + byte[] data=toByteArray(in); + in.close(); + FileOutputStream out=new FileOutputStream(bdUrl); + out.write(data); + out.close(); + } + + /** + * 鐩存帴鑾峰彇缃戠粶鏂囦欢鐨刴d5鍊� + * @param urlStr + * @return + */ + public static String getMd5ByUrl(String urlStr){ + String md5 = null; + try { + URL url = new URL(urlStr); + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + DataInputStream in = new DataInputStream(conn.getInputStream()); + md5 = DigestUtils.md5Hex(in); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return md5; + } + + /** + * 鑾峰彇缃戠粶鏂囦欢鐨勮緭鍏ユ祦 + * @param urlStr + * @return + */ + public static InputStream getInputStreamByUrl(String urlStr){ + DataInputStream in = null; + try { + URL url = new URL(urlStr); + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + in = new DataInputStream(conn.getInputStream()); + } catch (IOException e) { + log.error("url杞崲杈撳叆娴佸け璐�,閿欒淇℃伅{}",e.getMessage()); + } + return in; + } + + + public static void main(String[] args) + { +// try { +// toBDFile("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1496324940814&di=1d70e0de447be6547c372718b9b30ff6&imgtype=0&src=http%3A%2F%2Fimage.tianjimedia.com%2FuploadImages%2F2015%2F204%2F22%2FYMG9CAUWUM15.jpg","E://a.jpg"); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } + String a = getMd5ByUrl("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1496324940814&di=1d70e0de447be6547c372718b9b30ff6&imgtype=0&src=http%3A%2F%2Fimage.tianjimedia.com%2FuploadImages%2F2015%2F204%2F22%2FYMG9CAUWUM15.jpg"); + System.out.println(a); + } +} diff --git a/src/main/java/com/qxueyou/scc/sys/utils/VideoUtil.java b/src/main/java/com/qxueyou/scc/sys/utils/VideoUtil.java index 54ff647..b805f8f 100644 --- a/src/main/java/com/qxueyou/scc/sys/utils/VideoUtil.java +++ b/src/main/java/com/qxueyou/scc/sys/utils/VideoUtil.java @@ -2,6 +2,7 @@ import com.coremedia.iso.IsoFile; +import java.io.File; import java.io.IOException; @@ -15,11 +16,18 @@ * @return 鍗曚綅涓烘绉� */ public static long getMp4Duration(String videoPath) throws IOException { - IsoFile isoFile = new IsoFile(videoPath); - long lengthInSeconds = - isoFile.getMovieBox().getMovieHeaderBox().getDuration() / - isoFile.getMovieBox().getMovieHeaderBox().getTimescale(); - return lengthInSeconds; + try { + File file = File.createTempFile("temp", ".mp4"); //鍒涘缓涓存椂鏂囦欢 + Image2Binary.toBDFile(videoPath,file.getCanonicalPath()); + IsoFile isoFile = new IsoFile(file.getPath()); + long lengthInSeconds = + isoFile.getMovieBox().getMovieHeaderBox().getDuration() / + isoFile.getMovieBox().getMovieHeaderBox().getTimescale(); + return lengthInSeconds; + }catch (Exception e){ + e.printStackTrace(); + return 0; + } } diff --git a/src/main/java/com/qxueyou/scc/teach/res/service/HweiYunOBSService.java b/src/main/java/com/qxueyou/scc/teach/res/service/HweiYunOBSService.java index 0b83fa3..80d0dc5 100644 --- a/src/main/java/com/qxueyou/scc/teach/res/service/HweiYunOBSService.java +++ b/src/main/java/com/qxueyou/scc/teach/res/service/HweiYunOBSService.java @@ -1,17 +1,19 @@ package com.qxueyou.scc.teach.res.service; - + +import com.obs.services.model.PutObjectResult; +import com.qxueyou.scc.base.model.FileMeta; import org.springframework.web.multipart.MultipartFile; - + import java.io.InputStream; import java.util.List; - + /** * @Description 鍗庝负浜慜BS鏈嶅姟鎺ュ彛 * @author wuhuiju * @date 2022/12/2 17:01 */ public interface HweiYunOBSService { - + /** * @Description 鍒犻櫎鏂囦欢 * @author wuhuiju @@ -20,7 +22,7 @@ * @return: boolean 鎵ц缁撴灉 */ boolean delete(String objectKey); - + /** * @Description 鎵归噺鍒犻櫎鏂囦欢 * @author wuhuiju @@ -29,7 +31,7 @@ * @return: boolean 鎵ц缁撴灉 */ boolean delete(List<String> objectKeys); - + /** * @Description 涓婁紶鏂囦欢 * @author wuhuiju @@ -38,8 +40,8 @@ * @param: objectKey 鏂囦欢鍚嶇О * @return: java.lang.String url璁块棶璺緞 */ - String fileUpload(MultipartFile uploadFile, String objectKey); - + List<FileMeta> fileUpload(MultipartFile uploadFile, String objectKey); + /** * @Description 鏂囦欢涓嬭浇 * @author wuhuiju @@ -49,4 +51,3 @@ */ InputStream fileDownload(String objectKey); } - \ No newline at end of file diff --git a/src/main/java/com/qxueyou/scc/teach/res/service/impl/FileService.java b/src/main/java/com/qxueyou/scc/teach/res/service/impl/FileService.java index a992382..6f14ba5 100644 --- a/src/main/java/com/qxueyou/scc/teach/res/service/impl/FileService.java +++ b/src/main/java/com/qxueyou/scc/teach/res/service/impl/FileService.java @@ -27,7 +27,7 @@ /** * 鎵�鏈夋枃浠朵笂浼犵殑鎿嶄綔锛屽崟鐙埌鏂囦欢涓婁紶宸ョ▼鍚庯紝鍚庣画涓氬姟鎿嶄綔闇�瑕佷笅杞芥枃浠惰皟鐢ㄧ殑鏂规硶 - * + * * @author xiadehu * */ @@ -96,7 +96,7 @@ /** * 鎻掑叆鏂囦欢淇℃伅鍒版暟鎹簱 - * + * * @param name * @param fullPath * 鍏ㄨ矾寰� @@ -106,7 +106,7 @@ * 鏂囦欢绫诲瀷锛岄潪鏂囦欢鏍煎紡 * @return */ - private ResFile insertFileToDB(String name, String fullPath, String relativePath, String type) { + public ResFile insertFileToDB(String name, String fullPath, String relativePath, String type) { ResFile file = new ResFile(); @@ -127,10 +127,41 @@ return file; } + /** + * 鎻掑叆鏂囦欢淇℃伅鍒版暟鎹簱 + * + * @param name + * @param relativePath + * 鐩稿璺緞 + * @param type + * 鏂囦欢绫诲瀷锛岄潪鏂囦欢鏍煎紡 + * @return + */ + public ResFile insertFileToDBTwo(String name, Long Size, String relativePath, String type) { + + ResFile file = new ResFile(); + + TraceUtils.setCreateTrace(file); + file.setFileName(name); + file.setFileFormat(QFileUtils.getFileFormat(name)); + file.setFileType(type); + // TODO + file.setMd5Hash(null); + file.setPath(relativePath); + file.setSize(Size); + // TODO + file.setTenantId(null); + file.setDeleteFlag(false); + + save(file); + + return file; + + } /** * 鑾峰彇鏂囦欢绫诲瀷 - * + * * @param name * @return */ @@ -141,7 +172,7 @@ /** * 鑾峰彇鏂囦欢鐩爣璺緞 - * + * * @param name * @return */ diff --git a/src/main/java/com/qxueyou/scc/teach/res/service/impl/HweiYunOBSServiceImpl.java b/src/main/java/com/qxueyou/scc/teach/res/service/impl/HweiYunOBSServiceImpl.java index 83e5ca1..7343731 100644 --- a/src/main/java/com/qxueyou/scc/teach/res/service/impl/HweiYunOBSServiceImpl.java +++ b/src/main/java/com/qxueyou/scc/teach/res/service/impl/HweiYunOBSServiceImpl.java @@ -1,29 +1,31 @@ package com.qxueyou.scc.teach.res.service.impl; - + //import com.example.study.springboot.background.service.HweiYunOBSService; //import com.example.study.springboot.config.HweiOBSConfig; import com.obs.services.ObsClient; import com.obs.services.exception.ObsException; import com.obs.services.model.*; +import com.qxueyou.scc.base.model.FileMeta; +import com.qxueyou.scc.base.model.Result; import com.qxueyou.scc.base.util.CollectionUtils; import com.qxueyou.scc.base.util.QFileUtils; import com.qxueyou.scc.base.util.UUIDUtils; import com.qxueyou.scc.config.HweiOBSConfig; +import com.qxueyou.scc.teach.res.model.ResFile; import com.qxueyou.scc.teach.res.service.HweiYunOBSService; +import com.qxueyou.scc.teach.res.service.IFileService; import lombok.extern.slf4j.Slf4j; +import org.apache.catalina.core.ApplicationPart; import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; - + import java.io.IOException; import java.io.InputStream; -import java.util.Calendar; -import java.util.GregorianCalendar; -import java.util.List; -import java.util.Map; +import java.util.*; /** * @ClassName: HweiYunOBSServiceImpl @@ -39,6 +41,9 @@ private final Logger log = LogManager.getLogger(HweiYunOBSServiceImpl.class); @Autowired private HweiOBSConfig hweiOBSConfig; + + @Autowired + FileService fileService; public final static String FILE_TYPE_VIDEO = "video"; @@ -65,7 +70,7 @@ "JPG", FILE_TYPE_IMG,"JPEG", FILE_TYPE_IMG, "GIF", FILE_TYPE_IMG, "BMP", FILE_TYPE_IMG, "PNG", FILE_TYPE_IMG ); - + @Override public boolean delete(String objectKey) { ObsClient obsClient = null; @@ -81,7 +86,7 @@ } return true; } - + @Override public boolean delete(List<String> objectKeys) { ObsClient obsClient = null; @@ -99,10 +104,12 @@ } return false; } - + @Override - public String fileUpload(MultipartFile uploadFile, String objectKey) { + public List<FileMeta> fileUpload(MultipartFile uploadFile, String objectKey) { ObsClient obsClient = null; + List<FileMeta> files = new ArrayList<FileMeta>(2); + FileMeta fileMeta = null; try { String destPath = getDestPath(objectKey); String bucketName = hweiOBSConfig.getBucketName(); @@ -127,10 +134,18 @@ // 璁剧疆瀵硅薄璁块棶鏉冮檺涓哄叕鍏辫 request.setAcl(AccessControlList.REST_CANNED_PUBLIC_READ); PutObjectResult result = obsClient.putObject(request); - + fileMeta = new FileMeta(); + ResFile file = fileService.insertFileToDBTwo(objectKey, uploadFile.getSize(), result.getObjectUrl(), uploadFile.getContentType()); + fileMeta.setFileId(file.getFileId()); + fileMeta.setPath(result.getObjectUrl()); + fileMeta.setFileSize(uploadFile.getSize() / 1024 + "kb"); + fileMeta.setFileType(uploadFile.getContentType()); + fileMeta.setFileName(objectKey); + files.add(fileMeta); // 璇诲彇璇ュ凡涓婁紶瀵硅薄鐨刄RL log.info("宸蹭笂浼犲璞$殑URL" + result.getObjectUrl()); - return result.getObjectUrl(); + return files; +// return result.getObjectUrl(); } catch (ObsException e) { log.error("obs涓婁紶澶辫触", e); } catch (IOException e) { @@ -182,4 +197,4 @@ } return null; } -} \ No newline at end of file +} diff --git a/src/main/java/com/qxueyou/scc/teach/res/service/impl/resitem/ResItemVideoService.java b/src/main/java/com/qxueyou/scc/teach/res/service/impl/resitem/ResItemVideoService.java index 3c26b90..1caa134 100644 --- a/src/main/java/com/qxueyou/scc/teach/res/service/impl/resitem/ResItemVideoService.java +++ b/src/main/java/com/qxueyou/scc/teach/res/service/impl/resitem/ResItemVideoService.java @@ -4,6 +4,8 @@ import java.io.File; import java.util.Date; +import com.obs.services.ObsClient; +import com.obs.services.model.ObsObject; import com.qxueyou.scc.sys.utils.VideoUtil; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; @@ -39,8 +41,6 @@ @Autowired ICacheService cacheService; - @Value("${scc.resRootPath}") - String resRootPath; @Override public String add(String fileId, String name) { @@ -52,7 +52,7 @@ TraceUtils.setCreateTrace(resVideo); try { resVideo.setFileId(fileId); - resVideo.setPlayTime((int) VideoUtil.getMp4Duration(resRootPath +"/"+ file.getPath())); + resVideo.setPlayTime((int) VideoUtil.getMp4Duration(file.getPath())); resVideo.setName(name); resVideo.setMediaVideoId(mediaVideoId); resVideo.setStatus(ResItemVideo.STATUS_LINEUP); @@ -83,7 +83,7 @@ try { video.setDeleteFlag(false); - video.setPlayTime((int) VideoUtil.getMp4Duration(resRootPath +"/"+ file.getPath())); + video.setPlayTime((int) VideoUtil.getMp4Duration(file.getPath())); video.setName(file.getFileName()); video.setOrigUrl(file.getPath()); video.setStatus(MediaVideo.STATUS_LINEUP); -- Gitblit v1.8.0