Element UI结合vue-cropper打造图片裁剪上传组件

这篇文章详细描述了一个Vue组件,用于图片裁切和上传,涉及配置选项、文件类型验证、上传流程以及Vue的MVVM架构、双向绑定、生命周期管理和状态管理(Vuex)。
摘要由CSDN通过智能技术生成

props: {

//图片裁切配置

options: {

type: Object,

default: function() {

return {

autoCrop: true, //是否默认生成截图框

autoCropWidth: 180, //默认生成截图框宽度

autoCropHeight: 180, //默认生成截图框高度

fixedBox: false, //是否固定截图框大小 不允许改变

previewsCircle: true, //预览图是否是原圆形

title: ‘修改头像’

}

}

},

// 上传图片的大小,单位M

imgSize: {

type: Number,

default: 2

},

//图片存储在oss上的上级目录名

imgType: {

type: String,

default: ‘’

},

// 图片地址

imageUrl: {

type: String,

default: ‘’

}

},

data() {

return {

loading: false,

isStopRun: false

}

},

methods: {

//从本地选择文件

handleChange(info) {

if (this.isStopRun) {

return

}

this.loading = true

const { options } = this

console.log(info)

this.getBase64(info.file, imageUrl => {

const target = Object.assign({}, options, {

img: imageUrl

})

this.$refs.CropperModal.edit(target)

})

},

// 上传之前 格式与大小校验

beforeUpload(file) {

this.isStopRun = false

var fileType = file.type

if (fileType.indexOf(‘image’) < 0) {

this.$message.warning(‘请上传图片’)

this.isStopRun = true

return false

}

const isJpgOrPng =

file.type === ‘image/jpeg’ ||

file.type === ‘image/png’ ||

file.type === ‘image/jpg’

if (!isJpgOrPng) {

this.$message.error(‘你上传图片格式不正确!’)

this.isStopRun = true

}

const isLtSize = file.size < this.imgSize * 1024 * 1024

if (!isLtSize) {

this.$message.error(‘图片大小不能超过’ + this.imgSize + ‘MB!’)

this.isStopRun = true

}

return isJpgOrPng && isLtSize

},

//获取服务器返回的地址

handleCropperSuccess(data) {

//将返回的数据回显

this.loading = false

this.$emit(‘crop-upload-success’, data)

},

// 取消上传

handleCropperClose() {

this.loading = false

this.$emit(‘crop-upload-close’)

},

getBase64(img, callback) {

const reader = new FileReader()

reader.addEventListener(‘load’, () => callback(reader.result))

reader.readAsDataURL(img)

}

}

}

  • 模态框 CropperModal.vue

<el-dialog :visible.sync=“visible” :title=“options.title” :close-on-click-modal=“false” width=“800” @close=“cancelHandel”>

<vue-cropper ref=“cropper” :img=“options.img” :info=“true” :autoCrop=“options.autoCrop” :autoCropWidth=“options.autoCropWidth” :autoCropHeight=“options.autoCropHeight” :fixedBox=“options.fixedBox” @realTime=“realTime”>

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

Vue

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

img_convert/4335d677b95caa0ea0d29141cc0c3c1f.png)

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

  • 11
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
element组件库是一种基于Vue.js开发的前端UI组件库,拥有丰富的组件和功能,包括多图片上传的实现。在element中,可以使用el-upload组件实现多图片上传的功能。 首先,在Vue组件中引入el-upload组件,设置好相应的参数。其中,设置action属性为接收上传图片的后台接口地址,设置multiple属性为true,表示可以选择多张图片进行上传。同时,设置on-success属性为一个处理成功上传的回调函数,以便在图片上传成功后做一些逻辑处理。 其次,在回调函数中,可以通过参数获取到成功上传图片信息。可以将这些信息保存到数据中,并展示在界面中,以供用户查看。同时,还可以在回调函数中添加其他逻辑,例如对图片进行裁剪、压缩等操作,或者向服务器发送请求来保存图片的路径等。 最后,在界面中,可以使用el-image组件来展示已上传图片。el-image组件element提供的用于显示图片组件,可以根据指定的图片路径来加载并显示图片。可以通过循环遍历已上传图片信息,并使用el-image组件来动态生成展示图片的区域。 综上所述,通过使用element的el-upload和el-image组件,可以轻松实现多图片上传的功能。用户可以选择多张图片进行上传上传成功后可以在界面中展示已上传图片,并进行其他逻辑操作。element的丰富组件和简洁易用的接口,大大降低了开发者的工作量,提高了开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值