代码之家  ›  专栏  ›  技术社区  ›  Joshua Majebi

如何从node js向spirng boot发出多部分请求

  •  0
  • Joshua Majebi  · 技术社区  · 2 年前

    我有一个node js后端,需要向spring boot应用程序发送一个文件。

    该文件是本地上传/测试表。xlsx。

    下面是使用表单数据npm模块和axios上传文件的代码。

    const formData = new FormData()
    formData.append("file", fs.createReadStream("uploads/testsheet.xlsx"));
    formData.append("status", status);
    
    const path = `/endpoint`
    const auth = {
              username: username,
              password: password
    }
    const url = `${baseUrl}${path}`
    const response = await sendRequest(url, auth, "POST", formData, null, null, null)
    
    
    //sendRequest Code - 
    
     try {
    const response = await axios({
      method,
      url,
      data,
      params,
      headers,
      auth,
      config,
    })
    return response
    } catch (err) {
    console.log(`Fetch Error: => ${method}:${url} => ${err.message || err.response}`)
    return err.response ? { error: err.response.data.message } : { error: err.message }
    }
    

    弹簧护套侧有以下代码-

    @PostMapping("/endpoint")
    public StatusResponse update(@RequestParam("file") MultipartFile file, @RequestParam("status") String status){
        boolean response = transactionService.update(file, status);
    
        return statusResponse;
    }
    

    在spring boot方面,我一直遇到这个错误-

      org.springframework.web.multipart.MultipartException: Current request is not a multipart request
    

    从邮递员处发送邮件时,一切正常。!!!

    如何成功发送多部分文件?

    1 回复  |  直到 2 年前
        1
  •  0
  •   eol    2 年前

    您应该使用 .getHeaders() 功能 formData 对象提供,以便正确设置多部分表单边界,例如:

    const res = await axios.post(url, formData, {
      headers: formData.getHeaders()
    });