关于MultipartFile类上传文件遇到的问题

关于MultipartFile类上传文件遇到的问题

在开发时,后端使用了MultipartFile类进行接收文件,使用PostMan测试接口不报错,能够正常上传,
但是前端同事在测试时使用接口却报错。
先说结论,在后端使用MultipartFile类时前端的Headers中Content-Type需为multipart/form-data格式,
而设置方法,起初是直接采用’Content-Type’ : 'multipart/form-data’设置的,发现还是不行,后来查找
方法,发现采用formData.append(‘file’, document.querySelector(‘input[type=file]’).files[0]);的方式能够
解决。
下面附上源码


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link
            href="https://lib.baomitu.com/element-ui/2.15.13/theme-chalk/index.min.css"
            rel="stylesheet"
    />

</head>

<body>
<div id="app">
    <div class="signatory">
        <el-upload
                action=""
                accept=" .xlsx, .pdf, .txt, .doc, .docx, .xls, .rar, .zip, .png , .jpg, .jepg"
                :on-success="handleUploadSuccess"
                :on-change="handleUploadChange"
        >
            <el-button type="primary">上传文件</el-button>
        </el-upload>
    </div>
</div>

<script src="https://lib.baomitu.com/vue/2.6.14/vue.min.js"></script>
<script src="https://lib.baomitu.com/element-ui/2.15.13/index.min.js"></script>
<script src="https://lib.baomitu.com/axios/0.27.2/axios.js"></script>

<script>
    new Vue({
        el: "#app",
        data: {
            uploadAction:"url"
        },
        mounted() {

        },
        methods: {
            handleUploadChange(file) {
                const formData = new FormData();
                //关键行--该数据类型默认参数Content-Type:multipart/form-data
                formData.append('file', document.querySelector('input[type=file]').files[0]);
                // 发送请求上传文件
                axios.post(this.uploadAction, formData)
                    .then(response => {
                        console.log(document.querySelector('input[type=file]').files[0]);
                    })
                    .catch(error => {
                        console.error(error);
                    });
            },
            handleUploadSuccess(response) {
                // 处理上传成功的逻辑
                console.log(response);
            }
        },
    })
</script>
</body>
</html>

这期间还遇到了跨域问题,因为直接用网页上传文件,需要在后端解决跨域问题否则会报错,如Net Error,相关文章可自行查找

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值