springboot+element ui实现表单和多张图片的增加功能

功能要求:图表和表单一起做增加

环境要求:springboot2.4,element ui

这里附上element ui前端代码

一.html部分
        <el-form-item label="景点图片" :label-width="formLabelWidth" prop="imgUrl">
          <el-input v-model="SightForm.imgUrl" v-if="false"></el-input>
          <el-upload
            action="#"
            ref="uploadimg"
            list-type="picture-card"
            :auto-upload="false"
            :data="SightForm"
            :file-list="SightForm.imgUrl"
            :on-preview="handlePictureCardPreview"
            :on-remove="handleRemove"
            :on-change="handleChange"
            :http-request="uploadFile"
            :before-upload="beforeAvatarUpload"
            :multiple="true"
            :limit="6"
          >
            <i class="el-icon-plus"></i>
          </el-upload>
          <el-dialog :visible.sync="dialogVisible">
            <img width="100%" :src="dialogImageUrl" alt="">
          </el-dialog>
        </el-form-item>

解释:
v-model="SightForm.imgUrl"里面中绑的值是你在data里面定义的SightForm对象的对象属性里面的值,这个值也可以拿出来不放在SightForm对象里面,因为这个值只在页面用,数据传输用的不是这个值。

下面附上data里面需要用的定义

二.data部分
data() {
            return {
                formLabelWidth: '80px',
                dialogVisible: false,
                dialogImageUrl: '',
                SightForm: {
                    sightName: '',
                    SightDesc: '',
                    imgUrl: []
                },
                rules: {
                    sightName: [
                        {required: true, message: '请输入景点名称', trigger: 'blur'}
                    ],
                    SightDesc: [
                        {required: true, message: '请输入景点描述', trigger: 'change'}
                    ],
                    imgUrl: [{required: true, message: '请上传图片', trigger: 'blur'}],
                },
                formDate: ''
            }
        },

注意:(1)SightForm是我定义的需要传输的对象,里面放的是我定义的对象的参数,我把imgUrl拿出来在el-form-item 和el-input标签做了规则判断。

(2)ref一定要写,这是图片传输的重点;:auto-upload="false"表示不自动传输,改成手动传输;:http-request=" "这里面写你图片传输的方法,我的图片传输方法是uploadFile;:multiple="true"表示支持多文件传输;:limit="6"限制传输的文件个数。其他属性参数可以见element ui官网Upload组件,参考链接:Upload 上传
三.方法部分
        methods: {

            submitForm(formName) {
                this.$refs[formName].validate((valid) => {
                    if (valid) {
                        this.formDate = new FormData()
                        this.$refs.uploadimg.submit();

                        this.formDate.append('name', this.SightForm.sightName);
                        this.formDate.append("desc", this.SightForm.SightDesc);

                        axios.post("/api/sight/addSight", this.formDate, {
                            headers: {'Content-Type': 'multipart/form-data'}
                        }).then((res) => {
                            if (res.data == "1") {
                                this.testreload()
                            }
                        })
                            .catch((err) => {
                                return err
                            })


                    } else {
                        console.log('error submit!!');
                        return false;
                    }
                });
            },
            resetForm(formName) {
                this.$refs[formName].resetFields();
            },
            // 重写upload上传方法
            uploadFile(file) {
                this.formDate.append('file', file.file);
            },
            handleChange(file, fileList) {
                this.SightForm.imgUrl = fileList;
            },
            handleRemove(file, fileList) {
                this.SightForm.imgUrl = fileList;
            },
            handlePictureCardPreview(file) {
                this.dialogImageUrl = file.url;
                this.dialogVisible = true;
            },
            beforeAvatarUpload(file) {
                console.log(file)
                const isJPG = file.type === 'image/jpeg';
                const isPNG = file.type === 'image/png';
                const isLt10
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值