参考官网:
https://element.eleme.cn/#/zh-CN/component/upload
上传图片
效果图:
实现代码:
<el-form-item label="上传banner" prop="logo">
<span>支持扩展名:.png \ .jpg \ .jpeg;文件大小为:1920*676 px</span>
<el-upload
class="avatar-uploader"
:headers="headers"
accept="image/png,image/jpg,image/jpeg"
:action=uploadUrl
:show-file-list="false"
:on-success="handleAvatarSuccess"
:beforeUpload="beforeAvatarUpload">
<img v-if="dataForm.logo" :src="dataForm.logo" class="avatar">
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
handleAvatarSuccess (res, file) {
console.log(res)
this.dataForm.logo = res.uri
console.log(this.dataForm.logo)
},
beforeAvatarUpload(file) {
let _this = this
const isSize = new Promise(function (resolve, reject) {
let width = 1920; // 限制图片尺寸为1920X676
let height = 676;
let _URL = window.URL || window.webkitURL;
let img = new Image();
img.onload = function () {
let valid = img.width === width && img.height === height;
valid ? resolve() : reject();
}
img.src = _URL.createObjectURL(file);
}).then(() => {
return file;
}, () => {
_this.$message.error('图片尺寸限制为1920*676')
return Promise.reject();
});
return isSize
}
data () {
return {
uploadUrl: ''
}
}
init (id) {
this.uploadUrl = this.$http.adornUrl(`/services/oss/upload/batch`)
}
上传视频
有进度条,只可上传一个:效果图如下:
实现代码:
<el-form-item label="视频" prop="url">
<span>支持扩展名:.mp4,文件大小不得超过50M</span>
<el-button v-if="dataForm.url !='' && videoFlag == false && !editDisabled" type="text" @click="removeVideo()">删除视频</el-button>
<el-upload
class="avatar-uploader"
v-if="!dataForm.url"
:disabled="editDisabled || uploadVideoDisabled"
:headers="headers"
:action=uploadUrl
accept="audio/mp4, video/mp4"
:show-file-list="true"
list-type="picture-card"
:before-upload="beforeUploadVideo"
:on-progress="uploadVideoProcess"
:on-success="handleVideoSuccess"
:limit="1">
<i class="el-icon-plus"></i>
</el-upload>
<video v-if="dataForm.url !='' && videoFlag == false" :src="dataForm.url" class="avatar" controls="controls">您的浏览器不支持视频播放</video>
</el-form-item>
//上传视频限制格式
beforeUploadVideo(file) {
const isLt10M = file.size / 1024 / 1024 < 50;
if (!isLt10M) {
this.$message.error('上传视频大小不能超过50MB哦!');
return false;
}
this.uploadVideoDisabled = true
},
//上传成功
handleVideoSuccess(res, file) { //获取上传图片地址
this.uploadVideoDisabled = false
this.videoFlag = false;
this.videoUploadPercent = 0;
if(res.status === 'success'){
this.dataForm.url = res.uri;
}else{
this.$message.error('视频上传失败,请重新上传!');
}
}
data () {
return {
editDisabled: false,
uploadVideoDisabled: false,
videoFlag: false,
uploadUrl: ''
}
}
init (id,state,flag) {
this.uploadUrl = this.$http.adornUrl(`/services/oss/upload/batch`)
}