久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

vue實(shí)現(xiàn)視頻上傳功能

瀏覽:20日期:2022-09-30 13:32:22

本文實(shí)例為大家分享了vue實(shí)現(xiàn)視頻上傳功能的具體代碼,供大家參考,具體內(nèi)容如下

環(huán)境:vue + TS 上傳視頻 + 上傳到阿里云主要處理前端在vue下上傳視頻

使用的是阿里云的視頻點(diǎn)播服務(wù)

1、需要后臺(tái)去申請(qǐng)一個(gè)開(kāi)發(fā)API,請(qǐng)求阿里云的接口訪問(wèn)控制2、有了開(kāi)發(fā)視頻的token,供給前端3、前端去請(qǐng)求阿里云存儲(chǔ)

vue實(shí)現(xiàn)視頻上傳功能

video.vue

<template> <div class='container'> <el-card> <div slot='header'><div>課程:</div><div>階段:</div><div>課時(shí):</div> </div> <el-form label-width='40px'><el-form-item label='視頻'> <input ref='video-file' type='file' ></el-form-item><el-form-item label='封面'> <input ref='image-file' type='file' /></el-form-item><el-form-item> <el-button type='primary' @click='authUpload' >開(kāi)始上傳</el-button> <el-button>返回</el-button></el-form-item> </el-form> </el-card> </div></template><script>/* eslint-disable */import axios from ’axios’import { aliyunImagUploadAddressAdnAuth, aliyunVideoUploadAddressAdnAuth, transCodeVideo, getAliyunTransCodePercent} from ’@/services/aliyun-oss’export default { data () { return { uploader: null, videoId: null, imageUrl: ’’, fileName: ’’ } }, created () { this.initUploader() }, methods: { authUpload () { const videoFile = this.$refs[’video-file’].files[0] this.uploader.addFile(videoFile, null, null, null, ’{'Vod':{}}’) this.uploader.addFile(this.$refs[’image-file’].files[0], null, null, null, ’{'Vod':{}}’) this.fileName = videoFile.name this.uploader.startUpload() }, initUploader () { this.uploader = new window.AliyunUpload.Vod({// 阿里賬號(hào)ID,必須有值 ,值的來(lái)源https://help.aliyun.com/knowledge_detail/37196.htmluserId: 1618139964448548,// 上傳到點(diǎn)播的地域, 默認(rèn)值為’cn-shanghai’,//eu-central-1,ap-southeast-1region: ’cn-shanghai’,// 分片大小默認(rèn)1M,不能小于100KpartSize: 1048576,// 并行上傳分片個(gè)數(shù),默認(rèn)5parallel: 5,// 網(wǎng)絡(luò)原因失敗時(shí),重新上傳次數(shù),默認(rèn)為3retryCount: 3,// 網(wǎng)絡(luò)原因失敗時(shí),重新上傳間隔時(shí)間,默認(rèn)為2秒retryDuration: 2,// 開(kāi)始上傳onUploadstarted: async uploadInfo => { console.log(’onUploadstarted’, uploadInfo) let uploadAuthInfo = null if (uploadInfo.isImage) { const { data } = await aliyunImagUploadAddressAdnAuth() this.imageUrl = data.data.imageURL uploadAuthInfo = data.data } else { const { data } = await aliyunVideoUploadAddressAdnAuth({ fileName: uploadInfo.file.name }) this.videoId = data.data.videoId uploadAuthInfo = data.data } // console.log(’uploadAuthInfo’, uploadAuthInfo) this.uploader.setUploadAuthAndAddress( uploadInfo, uploadAuthInfo.uploadAuth, uploadAuthInfo.uploadAddress, uploadAuthInfo.videoId || uploadAuthInfo.imageId )},// 文件上傳成功onUploadSucceed: function (uploadInfo) { console.log(’onUploadSucceed’, uploadInfo)},// 文件上傳失敗onUploadFailed: function (uploadInfo, code, message) { console.log(’onUploadFailed’)},// 文件上傳進(jìn)度,單位:字節(jié)onUploadProgress: function (uploadInfo, totalSize, loadedPercent) {},// 上傳憑證超時(shí)onUploadTokenExpired: function (uploadInfo) { console.log(’onUploadTokenExpired’)},// 全部文件上傳結(jié)束onUploadEnd: async uploadInfo => { console.log(uploadInfo) console.log({ lessonId: this.$route.query.lessonId, fileId: this.videoId, coverImageUrl: this.imageUrl, fileName: this.fileName }) const { data } = await transCodeVideo({ lessonId: this.$route.query.lessonId, fileId: this.videoId, coverImageUrl: this.imageUrl, fileName: this.fileName }) console.log(data) setInterval(async () => { const { data } = await getAliyunTransCodePercent(this.$route.query.lessonId) console.log(’轉(zhuǎn)碼進(jìn)度’, data) }, 3000)} }) } }}</script>

aliyun-oss.ts ,存放接口

/** * 阿里云上傳 */import request from ’@/utils/request’export const aliyunImagUploadAddressAdnAuth = () => { return request({ method: ’GET’, url: ’/boss/course/upload/aliyunImagUploadAddressAdnAuth.json’ })}export const aliyunVideoUploadAddressAdnAuth = (params: any) => { return request({ method: ’GET’, url: ’/boss/course/upload/aliyunVideoUploadAddressAdnAuth.json’, params })}export const transCodeVideo = (data: any) => { return request({ method: ’POST’, url: ’/boss/course/upload/aliyunTransCode.json’, data })}export const getAliyunTransCodePercent = (lessonId: string | number) => { return request({ method: ’GET’, url: ’/boss/course/upload/aliyunTransCodePercent.json’, params: { lessonId } })}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Vue
相關(guān)文章:
主站蜘蛛池模板: 国产亚洲精品精品国产亚洲综合 | 99国产精品久久久久久久久久 | 久久精品欧美一区二区三区不卡 | 亚洲精品一区二区三区在线播放 | av伊人网 | 久久久久亚洲 | 精久久久 | 国产精品18hdxxxⅹ在线 | 成人在线视频播放 | 久久久久国产 | 国产韩国精品一区二区三区 | 国产精品久久久久久久久久妞妞 | 亚洲成人精品 | 日韩有码在线观看 | 蜜桃在线视频 | 中文字幕在线观看 | 91成人在线 | 亚洲精品二区 | 亚洲国产精品99久久久久久久久 | 国产成人精品一区二区三区视频 | 日日夜夜狠狠 | 国产精品国产精品国产专区不蜜 | 久久精品欧美 | 色综合久久久久综合99 | 亚洲成人一二区 | 国产高清精品一区二区三区 | 国产婷婷在线观看 | 日本高清视频在线播放 | 91久久精品一区二区三区 | 成人国产精品视频 | 欧美日韩电影一区二区 | 亚洲高清在线观看 | 国产日韩中文字幕 | 日韩www| 亚洲精品久久久一区二区三区 | 欧美激情 | 亚洲午夜精品片久久www慈禧 | 亚洲黄色国产 | 国产精品影院在线观看 | 日韩精品在线一区 | 日韩成人一区二区 |