基于vue+element的上传组件实现图片上传


基于Vue、Element-ui,封装组件为例子聊聊如何实现这个功能。其它组件实现方式思路一样的!

1. 云储存方式

常见的有七牛云,OSS(阿里云)等,这些云平台提供API接口,调用相应的接口,文件上传后会返回图片存储在服务器上的路径,前端获得这个路径保存下来提交给后端即可。流程很简单。

 

主要步骤:

  1. 向后端发送请求,获取oss配置数据
  2. 文件上传后,调用oss提供接口。
  3. 文件上传完成,文件储存在服务器相关路径
  4. 以接口的形式将返回的路径字段返回给前端,存到表单对象中。

 

代码

 视图层代码
<el-upload
     class="avatar-uploader"
     action="noAction"
     :headers="{ 'Content-Type': 'application/x-www-form-urlencoded' }"
     :show-file-list="false"
     :on-success="handleAvatarSuccess"
     :http-request="fileRequestBackId"
     :before-upload="beforeAvatarUpload">
         <img v-if="query.authenticationInfo.backId" 
         :src="query.authenticationInfo.backId" class="avatar">
          <div v-else class="avatar-uploader">
              <i class="el-icon-plus avatar-uploader-icon"></i>
              <span class="addText">上传身份证</span>
          </div>
</el-upload>
 
 

  elementUI的上传组件,http-request方法: 覆盖默认的上传行为,可以自定义上传的实现。

  formData是ajax2.0(XMLHttpRequest Level2)新提出的接口,利用FormData对象可以将form表单元素的name与value进行组合,实现表单数据的序列化,从而介绍表单元素的拼接,提高工作效 率。

 

 const params = new FormData() //创建FormData params.append('file', item.file) uploadFileToSecretOss(params).then(res => { if (res.data.code === '0') {
// 拿到返回的上传路径,
res.data.uploadUrl, 去提交表单
       // doSomethings
   } else {}
    })
   },

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM