This article example shares the specific code of Vue to realize the video upload function for your reference. The specific content is as follows Environment: vue + TS upload video + upload to Alibaba Cloud Mainly handles the front-end uploading video under vue Using Alibaba Cloud's video on demand service 1. You need to apply for a development API in the background and request Alibaba Cloud's interface access control video.vue <template> <div class="container"> <el-card> <div slot="header"> <div>Course:</div> <div>Stage:</div> <div>Class time:</div> </div> <el-form label-width="40px"> <el-form-item label="Video"> <input ref="video-file" type="file" > </el-form-item> <el-form-item label="Cover"> <input ref="image-file" type="file" /> </el-form-item> <el-form-item> <el-button type="primary" @click="authUpload" >Start uploading</el-button> <el-button>Return</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({ // Ali account ID, must have a value, the value comes from https://help.aliyun.com/knowledge_detail/37196.html userId: 1618139964448548, // The region for uploading to VOD, the default value is 'cn-shanghai', //eu-central-1, ap-southeast-1 region: 'cn-shanghai', // The default fragment size is 1M and cannot be less than 100K partSize: 1048576, // The number of shards to upload in parallel, the default is 5 parallel: 5, // When network failure occurs, re-upload times, default is 3 retryCount: 3, // When the network fails, the re-upload interval is 2 seconds by default. retryDuration: 2, // Start uploading 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 ) }, // File upload successful onUploadSucceed: function (uploadInfo) { console.log('onUploadSucceed', uploadInfo) }, // File upload failed onUploadFailed: function (uploadInfo, code, message) { console.log('onUploadFailed') }, // File upload progress, unit: bytes onUploadProgress: function (uploadInfo, totalSize, loadedPercent) { }, // Upload credential timeout onUploadTokenExpired: function (uploadInfo) { console.log('onUploadTokenExpired') }, // All files uploaded are finished 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('transcoding progress', data) }, 3000) } }) } } } </script> aliyun-oss.ts , storage interface /** * Upload to Alibaba Cloud*/ 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 } }) } The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM. You may also be interested in:
|
<<: Analysis of Difficulties in Hot Standby of MySQL Database
>>: Summary of 4 ways to add users to groups in Linux
In the previous article, I wrote a cross-table up...
This article mainly introduces how to specify par...
The first tutorial for installing MySQL-5.7.19 ve...
Preface: Mybatis special character processing, pr...
1.This points to 1. Who calls whom? example: func...
This article shares the specific code of React to...
Nginx can generally be used for seven-layer load ...
p>Manually start in "Services" and i...
1. unlink function For hard links, unlink is used...
Command to add a route: 1.Route add route add -ne...
The recommended code for playing background music ...
There are two ways to install MySQL 5.7. One is t...
Because the project needs to use https service, I...
I want to make a page using CSS3 rounded corners ...
1. Source of the problem A friend @水米田 asked me a...