怎么在vue中使用elementUi上传图片

  介绍

这篇文章给大家介绍怎么在vue中使用elementUi上传图片,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

<强>上传组件封装需求分析

在基于<强> elementUi 库做的商城后台管理中,需求最大的是商品管理表单这块,因为需要录入各种各样的商品图片信息。加上后台要求要传递小于2 m的图片,因此封装了一个<强> upload.vue组件作为上传页面的子组件,它用于管理图片上传逻辑。

上传。vue解析

上传主要用于实现表单上传图片的需求,主要由输入+ img构成当没有图片的时候显示默认图片,有图片则显示上传图片,因为输入样式不太符合需求所以只是将起设置为不可见,不能将其设置为display: none。否则将将无法触发输入的改变事件

上传。vue代码如下:

& lt; template>   ,& lt; div>   ,& lt; div 类=皍pload-box",:在   ,& lt; !——,用户改变图片按钮的点击,触发上传图片事件,——比;   ,& lt; input 类型=癴ile",: ref=癷mgType“1美元,@change=吧洗?formVal 1美元,imgType 1美元)“,类=皍pload-input",/比;   ,& lt; !——, img 的,src 用于渲染一个,图片路径,传入图片路径,渲染出图片,——比;   ,& lt; img : src=癴ormVal 1美元(imgType 1美元)? formVal 1美元[imgType $ 1]: & # 39;静态/img/upload.jpg& # 39;“,/比;   ,& lt;/div>   ,& lt;/div>   & lt;/template>   & lt; script>/*,   ,该组件因为要上传多个属性的图片,主图(mainImg),详细图(detailImg),规格图,(plusImg),   ,该组件基于压缩插件lrz,所以下方打入该组件   ,npm  install  lrz ——节省;即可   */import  lrz 得到& # 39;lrz& # 39;;   export  default  {   ,名字:& # 39;uploadImg& # 39;,,//组件名字   ,道具:{   ,,formVal: {   ,,,类型:对象,,//道具接受对象类型数据(表单对象也可以是纯对象类型)   ,,,要求:没错,   ,,,默认值:{}   ,,},   ,,imgType:{,,,//表单对象中的图片属性,例如:mainImg   ,,,类型:字符串,   ,,,要求:没错,   ,,,默认值:& # 39;& # 39;   ,,},   ,,imgStyle: {   ,,,类型:对象,,,//,用于显示的图片的样式,   ,,,要求:true //必须传递   ,,}   },   ,创建:函数(),{//才能生命周期函数,   },   ,数据:函数(),{   ,/*   ,,因为该组件需要改变父组件传递过来的值,   ,,所以将起拷贝一份   ,*/let 才能formVal 1美元,=,this.formVal;   let 才能imgType 1美元,=,this.imgType;   return {才能   ,,formVal 1美元,   ,,imgType 1美元,   ,,,uploadUrl: url,//你的服务器url地址   ,,};   },   ,方法:{   ,,上传:函数(formVal, imgType), {   ,,var  self =,;   ,,//图片上传加载我们在这里加入提示,下方需要主动关闭,防止页面卡死   ,,var  loadingInstance =,加载({美元。   文本:,,,,& # 39;上传中& # 39;   ,,});   ,,var  that =,美元。参考文献[imgType] .files[0];,//文件压缩文件   ,,//图片上传路径   ,,var  testUrl =, this.uploadUrl;,//图片上传路径   ,,try  {   ,,,//lrz用法和上一个一样也是一个压缩插件来的   ,,,lrz (,)   ,,,,不要犹豫(函数(消息),{   ,,,,,var  formData =, message.formData;,//压缩之后我们拿到相应的formData上传   ,,,,,的自我。axios美元   ,,,,,,. post (testUrl, formData)   ,,,,,,不要犹豫(函数(res), {   ,,,,,,,console.log (res);   ,,,,,,,if  (res ,,, res.data.iRet ==, 0), {   ,,,,,,,,formVal [imgType],=, res.data.objData.sUrl;   ,,,,,,,,//上传成功之后清掉数据防止下次传相同图片的时候不触发改变事件,   ,,,,,,,,美元自我。参考文献[imgType] .value =, & # 39; & # 39;;   ,,,,,,,/*   ,,,,,,,,,这里因为使用elementUI中的表单验证,   ,,,,,,,,,当上传图片完成之后还会提示没有上传图片   ,,,,,,,,,所以需要通知父组件清除该验证标记,   ,,,,,,,,*/,,,,,,,,的自我。美元发出(& # 39;clearValidate& # 39;,, imgType);   ,,,,,,,,的自我。nextTick美元((),=祝辞,{   ,,,,,,,,,//,以服务的方式调用的,Loading 需要异步关闭   ,,,,,,,,,loadingInstance.close ();   ,,,,,,,,});   ,,,,,,,},{else    ,,,,,,,,throw  res.data.sMsg;   ,,,,,,,}   ,,,,,,})   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

怎么在vue中使用elementUi上传图片