Vue如何使用Element-ui表单发送数据与多张图片到后端详解

 更新时间:2022年04月08日 16:18:21   作者:vv-柠檬茶  
在做项目的时候遇到一个问题,前端需要上传表单到后端,表单数据包括文本内容和图片,这篇文章主要给大家介绍了关于Vue如何使用Element-ui表单发送数据与多张图片到后端的相关资料,需要的朋友可以参考下

在做项目的时候遇到一个问题,前端需要上传表单到后端,表单数据包括文本内容和图片,后端我用的是Nodejs,效果类似下图

前端需要向后端传商品名称,价格,描述,商品图片

前端准备,利用Element-ui中的表单功能和上传功能,将upload代码嵌套在表单中,代码如下

<template>
    <div class="content">
      <div class="form">
        <el-form ref="form" :model="Form" label-width="80px">
           <el-form-item label="商品名称">
            <el-input v-model="Form.name"></el-input>
          </el-form-item>
          <el-form-item label="商品价格">
            <el-input v-model="Form.price"></el-input>
          </el-form-item>
          <el-form-item label="商品描述">
            <el-input v-model="Form.description"></el-input>
          </el-form-item>
          <el-form-item>
           <el-upload
            action="/api/users/addProduct"
            list-type="picture-card"
            :on-preview="handlePictureCardPreview"
            :on-remove="handleRemove"
            :before-upload="beforeProductUpload">
            <i class="el-icon-plus"></i>
          </el-upload>
        <el-dialog :visible.sync="dialogVisible">
          <img width="100%" :src="dialogImageUrl" alt="">
        </el-dialog>
         </el-form-item>
         <el-form-item>
            <el-button type="primary" @click="submit">立即创建</el-button>
            <el-button>取消</el-button>
          </el-form-item>
        </el-form>
      </div>
       
    </div>
</template>

需要注意的是,upload中的action传的是对应的后端接口

在上传图片前,需要先将图片转成base64格式的字符串后再上传给后端,这里定义了 beforeProductUpload函数进行转码处理

 beforeProductUpload(file){
          var _this = this
        return new Promise(function(resolve, reject) {
          var reader = new FileReader()
         reader.readAsDataURL(file)// 这里是最关键的一步,转换成base64
          reader.onload = function(event) {
            _this.Form.imageurl.push(event.target.result) //定义参数获取图片路径
          }
        })

script部分的代码

 
<script>
  export default {
    data() {
      return {
          Form: {
       	  name:'',
          imageurl:[],
          price:'',
          description:''
         },
        dialogImageUrl: '',
        dialogVisible: false
      };
      
    },
    methods: {
      handleRemove(file, fileList) {
        //移除图片
        console.log(file, fileList);
      },
      handlePictureCardPreview(file) {
        //图片预览
        this.dialogImageUrl = file.url;
        this.dialogVisible = true;
      },
      beforeProductUpload(file){
          var _this = this
        return new Promise(function(resolve, reject) {
          var reader = new FileReader()
         reader.readAsDataURL(file)// 这里是最关键的一步,转换成base64
          reader.onload = function(event) {
            _this.Form.imageurl.push(event.target.result) //定义参数获取图片路径
          }
        })
        
      },
      submit(){
        var form = {
          name:this.Form.name,
          imgdata: this.Form.imageurl,
          price:this.Form.price,
          description:this.Form.description
        } 
        this.$axios.post('/api/users/addProduct',form).then(res=>{
            console.log(res.data)
            this.$message('发布成功')
            this.Form = ''
            console.log('上传成功')
        })
      }
    }
  }
</script>

定义一个imageurl数组来接收传入的图片base64码,然后在保存在form对象中传过去给Node后端保存到数据库中,这里我用的是mongodb数据库,可以看到数据已经传到数据库了,imgdata就是存放图片base64的对象。

 自此已成功完成该问题

总结

到此这篇关于Vue如何使用Element-ui表单发送数据与多张图片到后端的文章就介绍到这了,更多相关Vue用Element-ui发送数据到后端内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • element-ui中的clickoutside点击空白隐藏元素

    element-ui中的clickoutside点击空白隐藏元素

    这篇文章主要为大家介绍了element-ui中的clickoutside点击空白隐藏元素示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • 如何构建 vue-ssr 项目的方法步骤

    如何构建 vue-ssr 项目的方法步骤

    这篇文章主要介绍了如何构建 vue-ssr 项目的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Vue实现数据筛选与搜索功能的示例代码

    Vue实现数据筛选与搜索功能的示例代码

    在许多Web应用程序中,数据筛选和搜索是关键的用户体验功能,本文将深入探讨在Vue中如何进行数据筛选与搜索的实现,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-10-10
  • 解决vue修改数据页面不重新渲染问题

    解决vue修改数据页面不重新渲染问题

    这篇文章详细介绍了vue渲染机制和如何解决数据修改页面不刷新问题的多种方法,想了解更多的小伙伴可以借鉴阅读
    2023-03-03
  • vue中可编辑树状表格的实现代码

    vue中可编辑树状表格的实现代码

    这篇文章主要介绍了vue中可编辑树状表格的实现代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • vue scoped与深度选择器deep的原理分析

    vue scoped与深度选择器deep的原理分析

    这篇文章主要介绍了vue scoped与深度选择器deep的原理分析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • 前端Vue设置cookie、删除cookie,获取cookie方式

    前端Vue设置cookie、删除cookie,获取cookie方式

    这篇文章主要介绍了前端Vue设置cookie、删除cookie,获取cookie方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • vue指令 v-bind的使用和注意需要注意的点

    vue指令 v-bind的使用和注意需要注意的点

    这篇文章主要给大家分享了 v-bind的使用和注意需要注意的点,下面文章围绕 v-bind指令的相关资料展开内容且附上详细代码 需要的小伙伴可以参考一下,希望对大家有所帮助
    2021-11-11
  • 一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)

    一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)

    这篇文章主要介绍了前后端分离及Vue.js入门,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • vue3 Vite 进阶rollup命令行使用详解

    vue3 Vite 进阶rollup命令行使用详解

    这篇文章主要介绍了vue3 Vite 进阶rollup命令行使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08

最新评论