Vue+Axios+SpringBoot后端同时接收文件和json作为请求参数

简介: Vue+Axios+SpringBoot后端同时接收文件和json作为请求参数

场景:现有向视频上传接口同时发送视频文件和json(其中包含视频封面等信息),应该如何定义后端接口,前端又如何进行请求呢?  


SpringBoot后端接口实现


可以编写如下的接口,以表单的形式接收视频文件(字段名为file)和媒体json数据(字段名为media),createMedia是需要实现的上传逻辑。

/**
     * 媒体上传
     * @param file
     * @param media
     * @param request
     * @return
     */
    @PostMapping("/media")
    public R uploadMedia(@RequestPart("file") MultipartFile file, @RequestPart("media") ResourceMedia media) {
        ResourceIndex index = mediaService.createMedia(file, media);
        return R.ok().data("index", index);
    }

使用Postman先测一哈


接口编写完成后,应该如何进行请求呢?可以先用Postman测试一下。

使用POST请求测试接口,在Body中携带媒体文件(file)和媒体json数据(media),需要特别注意的是,对于json字段需要将CONTENT-TYPE设置为application/json,否则SpringBoot将会报错,如下图所示:


至此,接口功能测试通过。


Vue前端使用axios如何发起请求


请求封装:自定义的resourceApi资源接口集合中,定义一个uploadMedia方法,data参数为表单数据

uploadMedia(data) {
    return request({
        url: `/resource/media/`,
        method: 'post',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded'
        },
        data: data
    })
},

发起请求:通过构建FormData作为表单数据,添加媒体json作为media字段的内容,需要构建Blob将其转换为application/json类型的数据,可被SpringBoot后端识别;添加媒体文件二进制数据作为file字段的内容。最后由刚刚的uploadMedia方法将表单数据提交即可。

const formData = new FormData()
formData.append('media', new Blob(['{"coverUrl": "https://fakeshop.tree.moe/static/avatar/2.png"}'], { type: 'application/json' }))
formData.append('file', this.fileList[0].raw)

resourceApi.uploadMedia(formData).then(resp => {
    if (resp.data && resp.data.index) {
        this.$message.success('上传成功')
        this.$emit('confirm', resp.data.index)
    } else {
        this.$message.error('获取上传结果失败')
    }
    this.isUploading = false
}).catch(() => {
    this.isUploading = false
})

相关文章
|
11月前
|
JSON Java 数据格式
微服务——SpringBoot使用归纳——Spring Boot返回Json数据及数据封装——封装统一返回的数据结构
本文介绍了在Spring Boot中封装统一返回的数据结构的方法。通过定义一个泛型类`JsonResult<T>`,包含数据、状态码和提示信息三个属性,满足不同场景下的JSON返回需求。例如,无数据返回时可设置默认状态码"0"和消息"操作成功!",有数据返回时也可自定义状态码和消息。同时,文章展示了如何在Controller中使用该结构,通过具体示例(如用户信息、列表和Map)说明其灵活性与便捷性。最后总结了Spring Boot中JSON数据返回的配置与实际项目中的应用技巧。
872 0
|
11月前
|
JSON Java fastjson
微服务——SpringBoot使用归纳——Spring Boot返回Json数据及数据封装——使用 fastJson 处理 null
本文介绍如何使用 fastJson 处理 null 值。与 Jackson 不同,fastJson 需要通过继承 `WebMvcConfigurationSupport` 类并覆盖 `configureMessageConverters` 方法来配置 null 值的处理方式。例如,可将 String 类型的 null 转为 "",Number 类型的 null 转为 0,避免循环引用等。代码示例展示了具体实现步骤,包括引入相关依赖、设置序列化特性及解决中文乱码问题。
597 0
|
11月前
|
JSON Java fastjson
微服务——SpringBoot使用归纳——Spring Boot返回Json数据及数据封装——Spring Boot 默认对Json的处理
本文介绍了在Spring Boot中返回Json数据的方法及数据封装技巧。通过使用`@RestController`注解,可以轻松实现接口返回Json格式的数据,默认使用的Json解析框架是Jackson。文章详细讲解了如何处理不同数据类型(如类对象、List、Map)的Json转换,并提供了自定义配置以应对null值问题。此外,还对比了Jackson与阿里巴巴FastJson的特点,以及如何在项目中引入和配置FastJson,解决null值转换和中文乱码等问题。
1588 0
|
7月前
|
JSON Java 数据格式
Spring Boot返回Json数据及数据封装
在Spring Boot中,接口间及前后端的数据传输通常使用JSON格式。通过@RestController注解,可轻松实现Controller返回JSON数据。该注解是Spring Boot新增的组合注解,结合了@Controller和@ResponseBody的功能,默认将返回值转换为JSON格式。Spring Boot底层默认采用Jackson作为JSON解析框架,并通过spring-boot-starter-json依赖集成了相关库,包括jackson-databind、jackson-datatype-jdk8等常用模块,简化了开发者对依赖的手动管理。
714 3
|
11月前
|
JSON Java 数据格式
微服务——SpringBoot使用归纳——Spring Boot中的全局异常处理——定义返回的统一 json 结构
本课主要讲解Spring Boot中的全局异常处理方法。在项目开发中,各层操作难免会遇到各种异常,若逐一处理将导致代码耦合度高、维护困难。因此,需将异常处理从业务逻辑中分离,实现统一管理与友好反馈。本文通过定义一个简化的JsonResult类(含状态码code和消息msg),结合全局异常拦截器,展示如何封装并返回标准化的JSON响应,从而提升代码质量和用户体验。
300 0
|
JSON Java 数据格式
springboot中表字段映射中设置JSON格式字段映射
springboot中表字段映射中设置JSON格式字段映射
630 1
|
JavaScript 前端开发 Java
SpringBoot项目的html页面使用axios进行get post请求
SpringBoot项目的html页面使用axios进行get post请求
260 2
|
JavaScript 前端开发 Java
SpringBoot项目的html页面使用axios进行get post请求
SpringBoot项目的html页面使用axios进行get post请求
251 7
|
JavaScript 前端开发 Java
SpringBoot项目的html页面使用axios进行get post请求
SpringBoot项目的html页面使用axios进行get post请求
214 0
|
5月前
|
JavaScript
Vue中Axios网络请求封装-企业最常用封装模式
本教程介绍如何安装并配置 Axios 实例,包含请求与响应拦截器,实现自动携带 Token、错误提示及登录状态管理,适用于 Vue 项目。
238 1