zoukankan      html  css  js  c++  java
  • vue el-upload form 同时提交

    项目需要form 表单和文件上传同时在一个请求,废话不多说上代码:

    上传的组件使用pug格式

    .row.my-4
    .col-12
    el-form(:model='domain', :rules='validateRules', v-loading='loading', ref='form', label-width='120px')
    el-form-item(label="请选择服务分类",prop="options")
    el-cascader(:options="options",v-model="domain.selectedOptions" ,style="80%")
    el-form-item(label='服务名称:', prop='name')
    el-input(v-model='domain.name', style=' 80%')
    el-form-item(label='服务价格:', prop='name')
    el-input(v-model='domain.price', style=' 80%')
    el-upload.upload-demo(ref='upload', :before-upload="uploadform" :on-preview='handlePreview', :on-remove='handleRemove', :file-list='fileList', :auto-upload='false')
    el-button(slot='trigger', size='small', type='primary') 选取文件
    // el-button(style='margin-left: 10px;', size='small', type='success', @click='submitUpload') 上传到服务器
    .el-upload__tip(slot='tip') 只能上传jpg/png文件,且不超过500kb


    .row
    .col-12.mb-4.text-center
    el-button(size='middle', @click='handleBack(domain.id)') 返回
    el-button(type='primary', @click='onClickSave()') 确定

    vue method处理

      uploadform: function(file) {
            const formData = new FormData()
            // console.log(this.domain)
            delete this.domain.id
            Object.keys(this.domain).forEach(key => {
              formData.append(key, this.domain[key])
            })
            formData.append('file', file)
           
            this.$refs.form.validate((valid) => {
              if (!valid) {
                return
              }
              const api = this.domain.id ? API.service.update : API.service.create
              const id = this.domain.id
              if (!this.domain.id) {
                this.domain.id = id
              }
              this.domain.contactor = null
              // console.log(this.service)
              api(formData).then((res) => {
                const data = res.data
                console.log('service saved: ' + JSON.stringify(data))
                const path = '/services'
                if (this.domain.id !== undefined) {
                  this.$router.push({
                    path: '/services/' + this.domain.id
                  })
                } else {
                  this.$router.push({
                    path: path
                  })
                }
              }).catch(() => {
                this.$message.error('保存失败,请稍后重试')
              })
            })
          },
          onClickSave: function() {
            this.$refs.upload.submit()
          }
    

     注意,红色的地方对应

    后台实现

    
    
    public Result add(@ModelAttribute Object object)
    
    
    
    至此实现完成

    欢迎学习

  • 相关阅读:
    C# 获取数组最小下标或最大下标
    使用EPplus 打开Excel报错
    EPplus的读写
    SQL Server 无法生成 FRunCM 线程
    WinForm无法加载'SQLite.Interop.dll'的问题
    雪花算法-唯一ID生成器
    .NET使用AutoResetEvent实现多线程打印奇偶数
    docker安装Elasticsearch+Kibana+密码配置+Kibana中文设置
    语义化版本 2.0.0
    Chrome 上所有受限端口的列表
  • 原文地址:https://www.cnblogs.com/tsxylhs/p/9595609.html
Copyright © 2011-2022 走看看