当前位置: 首页 > 知识库问答 >
问题:

如何将表单数据从React发送到Node JS后端服务器

邹杰
2023-03-14

我正在尝试将FormData从React JS发送到后端(express node server),如下所示。

我看到req的空值。身体myFormData(expressTest.js)。我也尝试了这篇文章中的建议,但没有成功。感谢您的帮助。

如何从React js axios post请求发送FormData到节点服务器?

反应测试。js模块

myFormData = new FormData();
myFormData.append("userName","TestUser")
myFormData.append("files", file) // input type file
export const sendDocument = async (myFormData) => {
  return await axios({
    method: 'post',
    url: `/sendDocument`,
    data: myFormData,
    headers: { 'Content-Type': 'multipart/form-data' }
  });
};

快速Test.js

const express = require('express')
const axios = require('axios')
const router = express.Router()

router.post('/', (req, res) => {
  console.log(req.body.myFormData) //giving undefined //tried req.myFormData too
  console.log(JSON.parse(req.body.myFormData.userName))
  axios({
    method: 'post',
    url: '/sendMyUserData',
    data: req.body.myFormData,
    headers: {
      apiKey: 'keytoapi',
      'Content-Type': 'multipart/form-data'
    }
  })
    .then(response => {
      
      return res.send(res)
    })
    .catch(error => {
      console.error('error')
     }

添加@con fused和@Kidas推荐的multer后,我可以在Express router中读取FormData。

下面是输出。

console.log(req.body)

[Object: null prototype] {
  files: '[object File]',
  userName: 'TestUser'
}

现在我需要把这个发送到我的后端Javaendpoint,我发送的是正确的正文吗?它没有击中我的终点

@PostMapping(path = "/sendMyUserData", consumes = { MediaType.MULTIPART_FORM_DATA_VALUE })
        public String uploadMyUserData(@RequestPart(value = "files") final MultipartFile[] multipartFiles, @RequestPart(value = "userName", required = true) String userName ) {
            return myService.storeFiles(multipartFiles, userName));
    }

共有1个答案

丁勇
2023-03-14

您需要multer来获取多部分/表单数据。

npm i multer

formdataParser = require('multer')().fields([])
app.use(formdataParser)
 

根据更新

https://github.com/expressjs/body-parser/issues/88#issuecomment-173644716评论

 类似资料:
  • 问题内容: 我们想将图像文件作为multipart / form发送到后端,我们尝试使用html表单获取文件并将文件作为formData发送,这是代码 后端中的错误是 “嵌套异常为org.springframework.web.multipart.MultipartException:无法解析多部分servlet请求;嵌套异常为java.io.IOException:org.apache.tomc

  • 问题内容: 我想使用Android将数据发送到我的php页面。我该怎么做? 问题答案: 您可以使用AndroidHttpClient进行GET或POST请求: 创建一个AndroidHttpClient来执行您的请求。 创建一个HttpGet或HttpPost请求。 使用setEntity和setHeader]方法填充请求。 对您的请求使用客户端上的execute方法之一。

  • 我一直在做这个项目,其中一个部分包括从Raspberry向我的服务器发送一些数据。但它不能正常工作,我不知道为什么。我试图通过删除“urllib2”并使用“request”来修复错误。但徒劳的是,一切都没有改变。如果有人能帮助我,我会非常感激的。谢谢! PHP代码: python代码:

  • 在我的应用程序中,我试图将数据从我的发送到一个名为的服务。这是我的以下代码: MainActivity.class: BGS服务。课程: 但我没有在服务类中获取数据。以下是我得到的错误: 02-25 09:05:41.166:E/AndroidRuntime(2633): JAVAlang.RuntimeException:无法启动活动 组件信息{com.microapple.googleplac

  • 试图通过改装将表单数据发送到服务器,但无法向服务器请求。我想用他们的数据发布一个图像数组。 我尝试了许多解决方案,但无法发布包含其数据的图像阵列。当我从addFormDataPart中删除provider\u文档时,效果很好。 如何发送array,它在上运行良好。 请求Api

  • 问题内容: 我在通过Notification从服务向活动发送数据时遇到问题,我单击了一个活动被调用的通知,但是当我尝试通过捆绑包添加一些参数时,我无法获得所谓的intent中的参数,我经历了链接 如何将通知单击中的参数发送到活动? 但是仍然没有运气。 其他人也发生过同样的问题吗? 提前致谢。 问题答案: 您还必须修改清单文件。 这是有效的示例: 这些变量和方法是Service类的成员: 这是Mai