From d92ead2d480779d3226e898c5827271795e21562 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期二, 03 六月 2025 12:55:49 +0800 Subject: [PATCH] 视频发布封面 --- pages/tabbar/video/video.vue | 68 +++++++++++++++++++++++++--------- 1 files changed, 50 insertions(+), 18 deletions(-) diff --git a/pages/tabbar/video/video.vue b/pages/tabbar/video/video.vue index 24539f4..103a3ff 100644 --- a/pages/tabbar/video/video.vue +++ b/pages/tabbar/video/video.vue @@ -16,7 +16,7 @@ :poster="videoInfo.cover || ''" ></video> <view class="progress-box"> - <progress style="width: 100%;" :percent="videoUploadProgress" show-info stroke-width="6" :active="true" active-color="#ff573e" /> + <progress style="width: 100%;" :percent="videoUploadProgress" active-mode="forwards" show-info stroke-width="6" :active="true" active-color="#ff573e" /> </view> <view class="video-actions"> <u-button type="error" size="mini" @click="reUpload">閲嶆柊涓婁紶</u-button> @@ -171,13 +171,20 @@ </template> <script> +import UIcon from '@/uview-components/uview-ui/components/u-icon/u-icon.vue'; +import UButton from '@/uview-components/uview-ui/components/u-button/u-button.vue'; +import UForm from '@/uview-components/uview-ui/components/u-form/u-form.vue'; +import UFormItem from '@/uview-components/uview-ui/components/u-form-item/u-form-item.vue'; +import UInput from '@/uview-components/uview-ui/components/u-input/u-input.vue'; +import USearch from '@/uview-components/uview-ui/components/u-search/u-search.vue'; +import UPopup from '@/uview-components/uview-ui/components/u-popup/u-popup.vue'; import MyTag from "@/components/my-tag.vue" -import { getSTSToken } from "@/api/common.js"; +import { getSTSToken, getFilePreviewUrl } from "@/api/common.js"; import { publish } from "@/api/video.js"; import { getRecommendTag3 } from "@/api/video-tag.js"; import { getFileKey } from "@/utils/file.js"; export default { - components: {MyTag}, + components: {MyTag,UIcon,UButton,UForm,UFormItem,UInput,USearch,UPopup}, data() { return { cosClient: null, @@ -200,6 +207,7 @@ id: '', title: '', videoFileKey: '', + videoDuration: 0, videoFit: 'cover', goodsId: '', tags: [], @@ -253,7 +261,7 @@ }, methods: { // 鑾峰彇鎺ㄨ崘鏍囩 - getRecommendTags(type) { + async getRecommendTags(type) { const params = { tagName: this.tagInput.trim(), searchType: type @@ -267,7 +275,6 @@ console.log("鎵ц浜�"); // 璋冪敤鍚庣鑾峰彇sts涓存椂璁块棶鍑瘉 getSTSToken().then(res => { - console.log(res, "sts缁撴瀯"); const COS = require('@/lib/cos-wx-sdk-v5.js'); // 寮�鍙戞椂浣跨敤 // const COS = require('./lib/cos-wx-sdk-v5.min.js'); // 涓婄嚎鏃朵娇鐢ㄥ帇缂╁寘 @@ -301,20 +308,21 @@ if(fileName.indexOf('%') > -1) { fileName = decodeURIComponent(fileName); } - const fileKey = getFileKey(fileName); - this.videoInfo = { - url: res.tempFilePath, - fileKey: fileKey, - fileType: fileKey.split('/')[0], - fileSize: res.size, - originalFileName: fileName, - cover: '' - }; - this.formData.videoFileKey = fileKey; - // 鍒ゆ柇瑙嗛鐨勫~鍏呮ā寮� - this.formData.videoFit = this.calculateVideoFit(res.width, res.height) + const fileKey = getFileKey(fileName); + this.videoInfo = { + url: res.tempFilePath, + fileKey: fileKey, + fileType: fileKey.split('/')[0], + fileSize: res.size, + originalFileName: fileName, + cover: '' + }; + this.formData.videoFileKey = fileKey; + this.formData.videoDuration = res.duration; + // 鍒ゆ柇瑙嗛鐨勫~鍏呮ā寮� + this.formData.videoFit = this.calculateVideoFit(res.width, res.height) - this.cosClient.uploadFile({ + this.cosClient.uploadFile({ Bucket: this.bucket, Region: this.region, Key: fileKey, @@ -381,7 +389,30 @@ sizeType: ['compressed'], sourceType: ['album'], success: (res) => { + let fileName = res.tempFilePaths[0].substring(res.tempFilePaths[0].lastIndexOf('/') + 1); + // 澶勭悊瀹夊崜鍙兘鐨刄RI缂栫爜 + if(fileName.indexOf('%') > -1) { + fileName = decodeURIComponent(fileName); + } + const fileKey = getFileKey(fileName); this.videoInfo.cover = res.tempFilePaths[0]; + this.cosClient.uploadFile({ + Bucket: this.bucket, + Region: this.region, + Key: fileKey, + FilePath: res.tempFilePaths[0], + SliceSize: 1024 * 1024 * 5 /* 瑙﹀彂鍒嗗潡涓婁紶鐨勯槇鍊�,5M */ + }, (err, data) => { + if (err) { + console.log('涓婁紶澶辫触', err); + } else { + // 鑾峰彇灏侀潰鐨勮闂湴鍧� + getFilePreviewUrl(fileKey).then(res => { + this.videoInfo.cover = res.data.data + this.formData.cover = fileKey + }) + } + }); } }); }, @@ -489,6 +520,7 @@ title: '', videoFileKey: '', videoFit: 'cover', + videoDuration: 0, goodsId: '', tags: [], fileInfo: {} -- Gitblit v1.8.0