水越帆 2019-06-28 17:04 采纳率: 60%
浏览 7232
已采纳

vue+element-ui怎么把表单数据和图片一起提交到后端呢?能获取图片大小和名称么?

vue+element-ui怎么把表单数据和图片一起提交到后端呢?能获取图片大小和名称么?

  • 写回答

4条回答 默认 最新

  • 珍妮玛•黛金 博客专家认证 2019-06-29 11:14
    关注

    直接上代码吧,满意希望给我采纳,谢谢

    
      <el-dialog :title="'添加'" :visible.sync="formVisibleAdd" :close-on-click-modal="false" width="30%" @close="closeDialogAdd">
        <el-form :model="addForm" label-width="100px" :rules="rules" ref="addForm">
          <el-form-item label="名称" prop="name">
            <el-input v-model="addForm.name" placeholder="请输入名称" />
          </el-form-item>
    
          <el-form-item label="编号" prop="code">
            <el-input type="text" v-model="addForm.code" placeholder="请输入编号" />
          </el-form-item>
    
          <el-form-item label="图片">
            <el-upload class="upload-demo" accept="image/jpeg,image/jpg,image/png" :auto-upload="false" ref="upload" action="" :on-change="uploadSectionFile" :on-remove="removeImage" list-type="picture">
              <el-button size="small" type="primary" v-show="isUploadShowHide">点击上传</el-button>
              <div slot="tip" class="el-upload__tip" v-show="isUploadShowHide" style="margin-top: -40px;idth: 300px;margin-left: 100px;text-align: left;color: red;">只能上传jpg/png文件,且不超过500kb</div>
            </el-upload>
    
          </el-form-item>
    
        </el-form>
        <div slot="footer" class="dialog-footer">
          <el-button @click="closeDialogAdd">取消</el-button>
          <el-button type="primary" @click.native="handleSubmitAdd" :loading="formLoading">提交</el-button>
        </div>
      </el-dialog>
    
    
    let handleSubmitAdd = function() {
    
      if (this.formLoading) {
        return
      }
    
      this.$refs.addForm.validate(valid => {
        if (!valid) {
          return
        }
        this.formLoading = true
    
        var formData = new FormData;
        formData.append('name', this.addForm.name);
        formData.append('code', this.addForm.code);
        formData.append('file', this.uploadFile);
    
        let config = {
          headers: {
            'Content-Type': 'multipart/form-data'
          }
        };
    
        this.$axios.post('http://localhost:8090/xx/xx/insert', formData, config)
          .then((res) => {
            if (res.data.code === 0) {
    
              this.formLoading = false
              this.$refs.upload.clearFiles();
              this.formVisibleAdd = false
    
            }
          })
          .catch((res) => {
          })
      })
    
    }
    
    
    @PostMapping(value = "insert", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
        public CommResult insertTableTeam(HttpServletRequest request, 
                                                                                @RequestParam(value = "name", required = false) String name,
                                                                                @RequestParam(value = "code", required = false) String code,
                                          @RequestParam(value = "file", required = false) MultipartFile file) {
    
    
            String rootPath = request.getSession().getServletContext().getRealPath("/");
            if (file != null) {
                String fileName = file.getOriginalFilename();
                if (fileName != null && fileName.trim().length() > 0) {
                    String newFileName = FileUtil.uploadFile(rootPath, fileName, file);
    
                }
            }
                    //TODO 添加
            return "success";
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 MCNP里如何定义多个源?
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏