vue上传视频
1.页面
<!-- 视频介绍 -->
<div class="list_video">
<el-form-item
class="all_item flexed align-item-starts uodateContent"
>
<div class="video_label">视频介绍:</div>
<div class="flexed align-items-end">
<div class="video_content">
//上传视频
<el-upload
class="avatar-uploade item_video"
action=""
:show-file-list="false"
:http-request="
(file) => httpRequestUpload(file)
"
@change="onChangeVideo"
>
//显示视频
<video
v-if="userResume.videoResume"
:src="store.pictureUrl + userResume.videoResume"
class="video"
></video>
<el-icon
v-else
class="video-uploader-icon"
style="background: rgba(247, 248, 250, 1)"
>
<Plus />
</el-icon>
<div class="flexed direction-coloumn video_replenish">
<div
class="flexed align-items-center"
style="color: #c30d23"
>
<el-icon :size="16">
<Edit />
</el-icon>
<div class="edit" style="margin-left: 2px">
编辑
</div>
</div>
<span>视频最大可上传:200M</span>
</div>
</el-upload>
</div>
</div>
</el-form-item>
</div>
2.页面显示

3.js
const onChangeVideo = () => {
userResume.value.videoResume = store.userVideo;
};
const httpRequestUpload = async (params) => {
const file = params.file;
const isLtType = [
"video/mp4",
"video/ogg",
"video/flv",
"video/avi",
"video/wmv",
"video/rmvb",
"video/mov",
];
if (file.size / 1024 / 1024 > 200) {
ElMessage.error("视频最大可上传:200M");
return false;
} else if (isLtType.indexOf(file.type) == -1) {
ElMessage.error(
"错误的视频上传格式,请上传mp4、ogg、flv、avi、wmv、rmvb、mov格式文件"
);
return false;
} else {
let requireParameter = {
fileNames: [file.name],
fileType: "VIDEO",
};
await uploadFile(requireParameter).then(async (res) => {
await upDateOss(res, file, "Video")
.then((ossRes) => {
if (res.code == 200) {
store.saveUserVideo(ossRes.keyValue);
ElMessage.success("个人简介视频上传成功");
return false;
} else {
ElMessage.error(res.message);
}
})
.catch((error) => {
ElMessage.error(error.message);
});
});
}
};
export function upDateOss(res, file) {
let keyValue = res.data.dirs[0];
let formData = new FormData();
formData.append('OSSAccessKeyId', res.data.accessId)
formData.append('policy', res.data.policy)
formData.append('signature', res.data.signature)
formData.append('key', res.data.dirs[0])
formData.append('file', file.file ? file.file : file, file.file ? file.file.name : file.name)
return new Promise((resolve, reject) => {
fetchPost(res.data.host, formData, {
headers: {
'Content-Type': 'multipart/form-data'
},
}).then((rep) => {
store.saveUserVideo();
resolve({
rep,
keyValue
})
}).catch((err) => {
reject(err)
})
})
}
export function uploadFile(parameter) {
return fetchPost('common/material/v1/signature', parameter)
}