提交 483b0ac7 authored 作者: 王鹏飞's avatar 王鹏飞

feat: 更新视频上传逻辑,支持实验ID和用户ID的动态路径

上级 5a253d46
......@@ -3,7 +3,6 @@ import LiveCover from './LiveCover.vue'
import { ElMessage, ElLoading, ElMessageBox } from 'element-plus'
import { useFileDialog } from '@vueuse/core'
import { useUserStore } from '@/stores/user'
import { upload } from '@/utils/upload'
import { useLive, readBlobAsBase64 } from '../composables/useLive'
import { useSocket } from '@/composables/useSocket'
import { saveTestRecord } from '../api'
......@@ -12,7 +11,7 @@ import md5 from 'blueimp-md5'
import dayjs from 'dayjs'
import { useLiveChat } from '../composables/useLiveChat'
import { useSpeechTranscriber } from '../composables/useSpeechTranscriber'
import { appendUpload } from '@/utils/oss'
import { appendUpload, multipartUpload } from '@/utils/oss'
import { useLiveRecord } from '../composables/useLiveRecord'
import { Check } from '@element-plus/icons-vue'
......@@ -43,6 +42,7 @@ const userName = computed(() => {
})
const route = useRoute()
const experimentId = computed(() => String(route.query.experiment_id || ''))
const userStore = useUserStore()
const ssoId = userStore.user?.id
......@@ -95,7 +95,7 @@ const {
if (props.isLocalUpload) return
if (isOSSUpload) {
ossResult = await appendUpload(blob, {
name: `live/${ssoId}/${fileName.value}.mp4`,
name: `live/experiment_${experimentId.value}/user_${ssoId}/${fileName.value}.mp4`,
position: ossResult?.nextAppendPosition,
})
fileUrl.value = ossResult.url
......@@ -173,8 +173,10 @@ const handleUpload = () => {
background: 'rgba(0, 0, 0, 0.7)',
})
try {
const res = await upload(file)
handleUpdateRecord({ id: recordId.value, live_video_addres: res, live_video_size: file.size.toString() })
const res = await multipartUpload(file, {
name: `live/experiment_${experimentId.value}/user_${ssoId}/${file.name}`,
})
handleUpdateRecord({ id: recordId.value, live_video_addres: res.url, live_video_size: file.size.toString() })
ElMessage.success('上传成功')
} catch (error) {
console.error(error)
......
<script setup>
import { ElMessage, ElLoading } from 'element-plus'
import { useFileDialog } from '@vueuse/core'
import { upload } from '@/utils/upload'
import { multipartUpload } from '@/utils/oss'
import { getRecordList, saveTestRecord, getRecord } from '../api'
import { useIntervalFn } from '@vueuse/core'
import ImprovementPlan from './ImprovementPlan.vue'
const props = defineProps(['data'])
const route = useRoute()
const experimentId = computed(() => String(route.query.experiment_id || ''))
function formatDuration(seconds) {
const minutes = Math.floor(seconds / 60)
......@@ -83,13 +85,16 @@ const handleUpload = (row) => {
background: 'rgba(0, 0, 0, 0.7)',
})
try {
const res = await upload(file)
const userId = row.current_user?.id
const res = await multipartUpload(file, {
name: `live/experiment_${experimentId.value}/user_${userId}/${file.name}`,
})
const recordRes = await getRecord({ id: row.id })
const record = recordRes.data.detail
await saveTestRecord({
...record,
live_practice_id: row.id,
live_video_addres: res,
live_video_addres: res.url,
live_video_size: file.size.toString(),
})
ElMessage.success('上传成功')
......
Markdown 格式
0% 或
您添加了 0 人 到此讨论。请谨慎行事。
请先完成此评论的编辑!
请 注册 或者 后发表评论