痞子374 2024-04-20 15:18 采纳率: 90.2%
浏览 4
已结题

Postman传参方式不对

img

img

img

img


像这种功能,前端传参时我给这么传了,结果报错了,这种应该怎么传啊,这是一次操作了三张表

  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-20 15:18
    关注

    引自免费微信小程序:皆我百晓生

    根据您提供的信息,看起来像是在尝试从前端通过POST请求向后端发送一个包含文件(multipart/form-data)和其他JSON数据的操作请求,但是服务器返回了一个MultipartException,提示当前请求不是multipart请求。

    为了确保正确地处理这个请求,您需要确认前端如何构建并发送请求,以及后端如何配置接收请求。下面是一个示例,展示如何在前端和后端进行正确的设置。

    前端部分:

    使用axios或其他HTTP库发送POST请求时,你需要将数据封装为multipart形式。例如,在JavaScript中,可以这样实现:

    const formData = new FormData();
    
    // 假设file是已选中的文件对象
    formData.append('file', file, file.name);
    
    // 将其他JSON数据转换成字符串,并添加到FormData中
    const jsonPayload = JSON.stringify({
      'operationName': 'Operation Name',
      'operationTime': '2022-01-01 12:00:00',
      // 其他字段...
    });
    
    formData.append('jsonData', jsonPayload);
    
    axios.post('/api/upload-operation', formData, {
      headers: {
        'Content-Type': 'multipart/form-data'
      }
    }).then(response => {
      console.log(response.data);
    }).catch(error => {
      console.error(error);
    });
    

    后端部分:

    在您的Java Spring Boot服务端,确保控制器方法接受MultipartFile类型作为参数,并且允许使用@RequestBody来解析JSON数据。以下是修改后的uploadOperation方法:

    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.multipart.MultipartFile;
    
    @PostMapping("/api/upload-operation")
    public ResponseEntity<JSONObject> uploadOperation(@RequestParam("file") MultipartFile file,
                                                   @RequestBody Map<String, Object> jsonData) throws IOException {
        // ... 现有代码 ...
    
        // 解析JSON数据
        String operationName = (String) jsonData.get("operationName");
        String operationTime = (String) jsonData.get("operationTime");
        // 解析其他字段...
    
        // ... 现有代码 ...
        
        return ResponseEntity.ok(result);
    }
    

    这里的关键点在于:

    1. 前端使用FormData构造器来创建一个multipart请求。
    2. 在后端,@RequestParam("file")用于获取上传的文件,而@RequestBody用于获取JSON数据。

    如果前端已经按照上述方式进行设置,但仍然出现问题,那么可能是Spring Boot应用程序的配置问题。检查是否启用了multipart的支持。在application.propertiesapplication.yml中添加以下内容:

    spring.servlet.multipart.enabled=true
    spring.servlet.multipart.max-file-size=10MB
    spring.servlet.multipart.max-request-size=10MB
    

    如果问题依然存在,请检查服务器日志或提供更详细的错误信息,以便进一步分析。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 5月5日
  • 已采纳回答 4月27日
  • 创建了问题 4月20日

悬赏问题

  • ¥20 WPF MVVM模式 handycontrol 框架, hc:SearchBar 控件 Text="{Binding NavMenusKeyWords}" 绑定取不到值
  • ¥15 需要手写数字信号处理Dsp三个简单题 不用太复杂
  • ¥15 数字信号处理考试111
  • ¥100 关于#audobe audition#的问题,如何解决?
  • ¥15 allegro17.2生成bom表是空白的
  • ¥15 请问一下怎么打通CAN通讯
  • ¥20 如何在 rocky9.4 部署 CDH6.3.2?
  • ¥35 navicat将excel中的数据导入mysql出错
  • ¥15 rt-thread线程切换的问题
  • ¥15 高通uboot 打印ubi init err 22