Vue3+element-plus自定义上传图片+带参数的POST请求

 代码实现:

<template>
    <h3>后台首页</h3>
    <el-form :model="formData">
        <el-form-item label="书籍名称:" label-width="100">
            <el-input v-model="formData.bookName" style="width: 20vw"></el-input>
        </el-form-item>
        <el-form-item label="书籍作者:" label-width="100">
            <el-input v-model="formData.bookAuthor" style="width: 20vw"></el-input>
        </el-form-item>
        <el-form-item label="书籍类型:" label-width="100">
            <el-select v-model="formData.bookType" placeholder="请选择书籍的类型" style="width: 20vw">
                <el-option label="动漫幽默" value="1"/>
                <el-option label="专业课书籍" value="2"/>
                <el-option label="自然类学科" value="3"/>
                <el-option label="人文类学科" value="4"/>
            </el-select>
        </el-form-item>
        <el-form-item label="书籍描述:" label-width="100">
            <el-input v-model="formData.bookDescribe" type="textarea" style="width: 20vw"></el-input>
        </el-form-item>
        <el-form-item label="书籍数量:" label-width="100">
            <el-input v-model="formData.bookAmount" placeholder="请输入书籍数量[0-120]" style="width: 20vw"></el-input>
        </el-form-item>
        <el-form-item label="书籍封面:" label-width="100">
            <el-upload
                    :http-request="httpRequest"
                    multiple
                    :show-file-list="true"
                    list-type="picture-card"
            ><el-icon><Plus /></el-icon>
            </el-upload>
        </el-form-item>
        <div>
            <el-button>取消</el-button>
            <el-button type="primary" @click="onBtn">添加</el-button>
        </div>
    </el-form>
</template>

<script setup>
import {ref, reactive} from "vue";
import axios from "axios";
import { Plus } from '@element-plus/icons-vue'

const formData = reactive({
    bookName: '',
    bookAuthor: '',
    bookType: '',
    bookDescribe: '',
    bookAmount: '',
});

//定义一个响应式数组用来接收图片
const fileList = ref([])

//自定义函数用来覆盖原有的XHR行为(默认提交行为)
function httpRequest(option) {
//将图片存到数组中
    fileList.value.push(option)
}

async function onBtn() {
    let dataForm = new FormData();
    dataForm.append('bookName', formData.bookName)
    dataForm.append('bookAuthor', formData.bookAuthor)
    dataForm.append('bookType', formData.bookType)
    dataForm.append('bookDescribe', formData.bookDescribe)
    dataForm.append('bookAmount', formData.bookAmount)

//将图片的二进制通过表单的形式发送到后台
    fileList.value.forEach((it,index)=>{
        dataForm.append('filename',it.file)
    })
    await axios({
        method: 'POST',
        url: 'http://localhost:9002/book/save',
        data: dataForm,
//设置请求参数的规则
        headers: {
            "Content-Type": "multipart/form-data"
        }
    }).then(response => {
        console.log(response.data)
    })
}
</script>

 发送请求后所带的的参数:

 

 此时可以看到图片已经通过表单的形式传到了后端,后端接收处理就好了。

  • 11
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@沉住气

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值