formdata后端只读到file

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了formdata后端只读到file相关的知识,希望对你有一定的参考价值。

参考技术A 使用formData格式从前端同时传json字符串和文件到后端时,后端只能接收String和MultipartFile。

1、如果用对象接收则会报415错误

415 Unsupported Media Type 服务器无法处理请求附带的媒体格式
2、如果用String接收,没有正确处理映射到对象的话,会出现对象取值空指针异常的问题

思路分析:
先采用String接收数据,然后使用JSONObject.parseObject()方法,进行json数据的解析,实体类解析对象可根据Json数据的对象类型进行定义,可嵌套多层对象关系进

前端向后端发送请求(FormData)

JSON对象转成formData对象,formData对象转成JSON

在向后端请求时,如果上传的数据里存在file文件对象,需要用到表单提交,这时候我们需要将JSON对象,转成formData对象,具体见代码

 const formData = new FormData();
  Object.keys(params).forEach((key) => {
    formData.append(key, params[key]);
  });

下面也有可能需要formData转JSON,代码如下:

var jsonData = {};
  formData.forEach((value, key) => jsonData[key] = value);
 mypost1() {
    let url = ‘http://1.1.1.1:8080/AA/pAA/kAAAin/quAA‘;
    let params = {
      AA: ‘‘,
      SS: ‘‘,
      DD: ‘1‘
    }
    const formData = new FormData();
    Object.keys(params).forEach((key) => {
      formData.append(key, params[key]);
    });
    console.log(formData)
    this.http.post(url, formData).subscribe({
      next: (res: any) => {
        if (res.status === ‘success‘) {
        } else { if (!res.message || res.message === ‘error‘) { this.msg.error(‘...‘) } else { this.msg.error(res.message); } }
      }, error: (err: any) => { }
    })
  }

以上是关于formdata后端只读到file的主要内容,如果未能解决你的问题,请参考以下文章

前端向后端发送请求(FormData)

如何使用 FormData 发送文件数组?

FormData如何向后端传递数组

FormData() 对象在 Django 后端始终为空

Vue-resource + FormData 文件上传与 Laravel 后端

前端向后端传递formData类型的二进制文件