Java @RequestPart注解:同时实现文件上传与JSON对象传参

news/2024/10/16 10:08:16 标签: 前端, json

@RequestPart注解:用于处理multipart/form-data请求的一部分,通常用于文件上传或者处理表单中的字段。

java后端举例:

    @PostMapping("/fileTest")
    public AjaxResult fileTest(@RequestPart("file") MultipartFile file,@RequestPart("dept") Dept dept){
        String originalFilename = file.getOriginalFilename();
        System.out.println(originalFilename);
        System.out.println(dept);
        return success();
    }

 Postman测试接口传参格式:

 注意事项: dept类型的格式是application/json

前端使用的是vue3

async function uploadDept(){
  const  formData = new FormData();
//文件类型
  formData.append('file',queryParamsFile.value.file);
//获取值方式一:
  let dept = JSON.stringify({...form.value})
//获取值方式二:用于测试
  const  deptInfo = JSON.stringify({
    "deptId": 33,
    "deptName": "财务部",
    "leader": null,
    "phone": null,
    "email": null,
  });
//添加blob类型
  formData.append('dept', new Blob([dept], { type: "application/json" }));
// formData.append('dept', new Blob([deptInfo],{type : "application/json"});

//调用接口
  await uploadFileTest(formData).then(response => {
    proxy.$modal.msgSuccess("成功");
  });

}

调用后端接口配置

export const uploadFileTest = (data)=>{
    return axios({
        headers: {
            'Content-Type': 'multipart/form-data'
        },
        url:'/dept/fileTest',
        method:'post',
        //忽略contentType
        data: data,
        //取消序列化
        contentType: false,
        // dataType: 'json',
        //设置请求头
        processData: false
    })
}

 注意:有可能有问题的地方

在axios 的配置文件中,注意下面这个,把config.headers['Content-Type'] 这行注释掉

request.interceptors.request.use(config => {
if(config && config.headers){
//如果有这一行,注释下再试试
// config.headers['Content-Type'] = 'application/json;charset=utf-8';  
}

http://www.niftyadmin.cn/n/5707704.html

相关文章

nginx与apache相比

文章目录 架构并发处理能力静态内容处理动态内容处理配置复杂度稳定性 架构 Nginx:采用异步非阻塞的事件驱动架构,能够高效地处理大量并发连接。Apache:采用多进程模型,每个请求都会创建一个独立的进程,对于并发连接的…

博客|基于springBoot的精简博客系统设计与实现(附项目源码+论文+数据库)

私信或留言即免费送开题报告和任务书(可指定任意题目) 目录 一、摘要 二、相关技术 三、系统设计 (1)个人中心 (2)管理员管理 (3)用户管理 (4)博客信…

c# 中List的介绍说明

一.List的定义说明 在C#中&#xff0c;List<T>是一个泛型类&#xff0c;它允许你创建一个元素类型为T的强类型列表。List<T>类位于System.Collections.Generic命名空间下&#xff0c;是.NET Framework的一部分。 二.List<T>的一些常用操作和方法 2.1添加元…

地级市-知识产权保护水平测算(2003-2021年)

知识产权保护水平是指权利人的知识产权依法受到保护的程度或强度。它通常由国家赋权&#xff0c;使创造者在一定时期内享有智力成果的专有独占权。知识产权保护具有时间性、专有性和区域性三大特征。 2003年-2021年地级市-知识产权保护水平测算&#xff08;数据整理&#xff0…

PHP 函数 func_num_args() 的作用

func_num_args() 是 PHP 中的一个内置函数&#xff0c;用于获取传递给当前用户定义函数的参数个数。这个函数特别有用于处理可变数量的参数&#xff08;也称为可变参数列表&#xff09;。 语法 int func_num_args ( void ) 返回值 func_num_args() 返回一个整数&#xff0c…

ajax地址参数与data参数运用

ajax的运用 因为项目在进行安全准入检查&#xff0c;也是代码安全的一种处理方式吧&#xff0c;然后我们在进行行加密以及模块加密&#xff0c;就是因为行信息中存在行id可以通过更换行id进行查询其他行的信息&#xff0c;模块也是一样&#xff0c;可能会出现垂直越权以及水平…

EasyExcel填充模板导出excel.xlsx

菜鸟的自我救赎&#xff0c;自从有了GPT&#xff0c;还是头一次一个bug写一天。 直接贴导出excel模板的完整案例 官网冲刺 EasyExcel EasyExcel填充模板导出excel.xlsx / 导出excel模板 一、bug(不需要请跳过) 1.1 使用apache poi操作excel报错 java.lang.NoSuchMethodError…

c++中的final说明符

final是c11引入的说明符&#xff0c;可以修饰在类或者类成员函数尾部。 final修饰类时&#xff0c;表示该类不能被继承。 class A final { }; 上例表明&#xff0c;类A是一个不能被继承的类。 class A { public:virtual void bar(); };class B final: public A { public:voi…