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
})

相关文章
|
6天前
|
JSON JavaScript 前端开发
vue的 blob文件下载文件时,后端自定义异常,并返回json错误提示信息,前端捕获信息并展示给用户
vue的 blob文件下载文件时,后端自定义异常,并返回json错误提示信息,前端捕获信息并展示给用户
|
6天前
|
JSON Java 数据格式
nbcio-boot升级springboot、mybatis-plus和JSQLParser后的LocalDateTime日期json问题
nbcio-boot升级springboot、mybatis-plus和JSQLParser后的LocalDateTime日期json问题
|
6天前
|
JSON JavaScript Java
从前端Vue到后端Spring Boot:接收JSON数据的正确姿势
从前端Vue到后端Spring Boot:接收JSON数据的正确姿势
26 0
|
6天前
|
JSON Java 数据处理
Spring Boot与Jsonson对象:灵活的JSON操作实战
【4月更文挑战第28天】在现代Web应用开发中,JSON数据格式的处理至关重要。假设 "Jsonson" 代表一个类似于Jackson的库,这样的工具在Spring Boot中用于处理JSON。本篇博客将介绍Spring Boot中处理JSON数据的基本概念,并通过实际例子展示如何使用类似Jackson的工具进行数据处理。
28 0
|
6天前
|
JSON fastjson Java
|
数据采集 JSON 前端开发
SpringBoot 如何统一后端返回格式?
今天我们来聊一聊在基于SpringBoot前后端分离开发模式下,如何友好的返回统一的标准格式以及如何优雅的处理全局异常。 首先我们来看看为什么要返回统一的标准格式?
766 0
SpringBoot 如何统一后端返回格式?
|
6天前
|
Java 应用服务中间件 Maven
Spring Boot项目打war包(idea:多种方式)
Spring Boot项目打war包(idea:多种方式)
21 1
|
6天前
|
Java Linux
Springboot 解决linux服务器下获取不到项目Resources下资源
Springboot 解决linux服务器下获取不到项目Resources下资源
|
5天前
|
Java Maven
SpringBoot项目的用maven插件打包报Test错误
SpringBoot项目的用maven插件打包报Test错误
|
3天前
|
前端开发 JavaScript Java
Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)五(前端页面
Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)五(前端页面
Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)五(前端页面

热门文章

最新文章