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

无法将表单数据作为“Multipart/formdata”发送

季小云
2023-03-14

无法在react native expo应用程序中以“Multipart/formdata”内容类型发送表单数据。当我们在react-native应用程序的post请求中发送formData对象时,我们无法获取req。需求主体。来自节点后端的文件

  export const saveUserAddVisitor = async data => {
  try {
    const apiUrl = configConstants.apiUrlWithPort;
    const addVisitorData = await axios.post(
      `${apiUrl}/api/v1/mobile/apartment/member`,
      data,
      {
        headers: {
          Accept: 'application/json',
          'Content-Type': 'multipart/form-data',
        },
      },
    );
    return addVisitorData;
  } catch (err) {
    return err;
  }
};

共有2个答案

仲孙昊焱
2023-03-14

带有axios的代码看起来很好,只是一定要发送FormData类型,就像Rémi在这里说的那样https://stackoverflow.com/a/72454168/16205278

您可以在此函数之前构造 FormData,并将其直接在当前代码中与 axios 函数一起使用。

服务:

import axios from "axios";
import configConstants from "./config.js";

/**
 * Current function to save User Add Visitor
 * @param {*} data
 */
export const saveUserAddVisitor = async (data) => {
  try {
    const apiUrl = configConstants.apiUrlWithPort;
    const addVisitorData = await axios.post(
      `${apiUrl}/api/v1/mobile/apartment/member`,
      data,
      {
        headers: {
          Accept: 'application/json',
          "Content-Type": "multipart/form-data"
        }
      }
    );
    return addVisitorData;
  } catch (err) {
    return err;
  }
};

使用:

import {saveUserAddVisitor} from "./index"

const form = new FormData();
form.append("visitor", { firstName: "Jack", lastName: "Doe" });
saveUserAddVisitor(form);

API快递:

显然,express无法解析多部分形式的数据,除非有人帮忙,根据以下资源:https://codex.so/handling-any-post-data-in-express

您必须使用< code>multer中间件:

const multer = require('multer');

app.post('/', multer().none(), function (req, res, next) {
  req.body;
  //... some code
});
江俊能
2023-03-14

您可以尝试这样的没有Axios也能工作的东西:

export const saveUserAddVisitor = async data => {
    var data = new FormData()
    data.append('foo', {
        ...
    })
    try {
        const apiUrl = configConstants.apiUrlWithPort;
        const addVisitorData = await fetch(`${apiUrl}/api/v1/mobile/apartment/member`, {
            method: 'POST',
            headers: {
                Accept: 'application/json',
                'Content-Type': 'multipart/form-data'
            },
            body: data
        })
        return addVisitorData;
    } catch {
        return err;
    }
}

在我给了你一个客户端的工作代码的例子之后,但是问题可能来自于服务器;)

 类似资料:
  • 问题内容: 我在使用jQuery的ajax函数将文件发送到服务器端PHP脚本时遇到问题。可以获取File- List,但是如何将此数据发送到服务器呢?使用文件输入时,服务器端php脚本上的结果数组()为0()。 我知道这是可能的(尽管直到现在我还没有找到任何jQuery解决方案,只有Prototye代码(http://webreflection.blogspot.com/2009/03/safar

  • 问题内容: 我正在尝试使用Jetty将带有RestTemplate的文件上传到Raspberry Pi。在Pi上,正在运行一个servlet: 我能够成功卷曲 这是应该在webapp上具有相同功能的方法。 这是我得到的输出: ui-elements.html上传了! org.springframework.web.multipart.support.StandardMultipartHttpSer

  • 是否可以将多部分表单的内容捆绑到相应的控制器方法中的单个对象中? 即。如何转换方法 转换为具有以下签名的方法: 其中包含multipartFile和附加参数:

  • 我如何发送表单数据作为‘文本’通过放心,请参阅截图。当我使用request.multipart(“key”.“value”)时,请求是作为文件发送的(参考屏幕截图)。蒂娅。

  • 以下API使用postman工作: Spring boot,后端代码: ReactJS,前端代码:我在中有对象数组。 触发功能的按钮: 我需要将我的前端(ReactJS)代码更改为,就像我使用postman发布请求一样。当前JS代码导致以下错误响应: Servlet。路径为[]的上下文中的servlet[dispatcherServlet]的service()引发了异常[请求处理失败;嵌套异常为o

  • 问题内容: 我有一个使用json数据生成的动态表单,我需要在提交时传递表单输入值。我打算将值作为formdata发送。我已经创建了Submit函数,但是我不知道如何在formdata中追加值,并且需要使用Axios通过post方法。我是新来的反应者,谁能告诉我该怎么做。下面是我的代码。 问题答案: 要发布使用情况,您需要指定要发送的内容,因为应该是。 勾选此,如何使用与: