VOD-视频点播视频stsToken分片上传,vue的demo有吗?
是的,阿里云官方提供了基于 Vue.js 的视频点播上传示例,你可以前往阿里云官网下载示例代码,然后根据自己的需求进行修改和适配。
示例代码下载地址:https://help.aliyun.com/document_detail/93750.html
在示例代码中,你需要修改的地方主要有以下几个:
在 src/components/VideoUpload.vue
文件中,修改 accessKeyId
、accessKeySecret
和 stsToken
为你自己的值。
在 src/components/VideoUpload.vue
文件中,修改 region
、bucket
和 endpoint
为你自己的值。
在 src/components/VideoUpload.vue
文件中,修改 key
为你要上传的文件名。
在 src/components/VideoUpload.vue
文件中,修改 policy
和 signature
为你自己的值。
在 src/components/VideoUpload.vue
文件中,修改 file
为你要上传的文件对象。
在 src/components/VideoUpload.vue
文件中,根据自己的需求修改上传进度条和上传成功后的回调函数。
修改完成后,你可以通过运行以下命令来启动示例程序:
npm install
npm run serve
然后在浏览器中访问 http://localhost:8080
即可查看示例程序。
以下是Vue的VOD-视频点播视频stsToken分片上传的示例代码,供参考:
<template>
<div class="upload-container">
<div class="upload-box">
<input type="file" ref="fileInput" @change="handleFileChange">
<el-button type="primary" @click="startUpload">开始上传</el-button>
</div>
<el-progress :percentage="percent" status="active"></el-progress>
</div>
</template>
<script>
import { getUploadAuth } from '@/api/vod'
export default {
data() {
return {
uploadAuth: null,
uploadAddress: null,
videoId: '',
percent: 0,
file: null
}
},
methods: {
async handleFileChange() {
this.file = this.$refs.fileInput.files[0]
const res = await getUploadAuth()
this.uploadAuth = res.data.uploadAuth
this.uploadAddress = res.data.uploadAddress
this.videoId = res.data.videoId
},
startUpload() {
const fileSize = this.file.size
const chunkSize = 1 * 1024 * 1024 // 1MB
const chunkCount = Math.ceil(fileSize / chunkSize)
let uploadedCount = 0
let fileReader = new FileReader()
let blobSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice
let start = 0
let end = chunkSize
let uploadPart = (index) => {
if (index >= chunkCount) {
this.completeUpload()
return
}
let chunk = blobSlice.call(this.file, start, end)
let formData = new FormData()
formData.append('FileName', this.file.name)
formData.append('OSSAccessKeyId', this.uploadAuth.accessKeyId)
formData.append('Expires', this.uploadAuth.expireTime)
formData.append('Signature', this.uploadAuth.signature)
formData.append('key', ${this.uploadAuth.dir}/${this.videoId}/${index}.mp4)
formData.append('policy', this.uploadAuth.policy)
formData.append('partNumber', index + 1)
formData.append('uploadId', this.uploadAuth.uploadId)
formData.append('file', chunk)
this.$axios.post(this.uploadAddress, formData, {
headers: {
'Content-Type': 'multipart/form-data'
},
onUploadProgress: (progressEvent) => {
if (progressEvent.lengthComputable) {
this.percent = Math.round((uploadedCount + progressEvent.loaded) / fileSize * 100)
}
}
}).then(() => {
uploadedCount++
start = end
end = start + chunkSize
uploadPart(uploadedCount)
}).catch(() => {
this.$message.error('上传失败')
})
}
uploadPart(0)
},
completeUpload() {
this.$axios.post('/vod/video/complete-upload', {
videoId: this.videoId
}).then(() => {
this.$message.success('上传成功')
}).catch(() => {
this.$message.error('上传失败')
})
}
}
}
</script>
需要注意的是,此示例代码需要根据实际情况进行适当修改。同时在使用过程中,需要提前获取上传凭证(uploadAuth)和上传地址(uploadAddress),并将其作为参数传递给后端进行验证。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。