如何在 NodeJS 中允许表单数据

2024-05-12

我最近创建了一个接受文件的 API。我正在尝试使用 Postman 测试 API。如果我使用发出帖子请求x-wwww-form-urlencoded身体类型,一切正常,我得到了所有预期的数据。唯一的问题是它不允许发送文件。如果我使用form-databody 类型,允许您发送文件,我在后端没有收到任何内容。不确定邮递员是否有问题或者我做错了什么。我的预感是后端不接受form-data目前,这就是为什么我没有收到任何数据。我能做些什么来改变这一点吗?

到目前为止我的标题看起来像这样,

res.setHeader('Access-Control-Allow-Origin', origin);
res.header("Access-Control-Allow-Methods", "GET, POST, PATCH, PUT, DELETE, OPTIONS");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, form-data");

app.js

app
    // static route will go to the client (angular app)
    .use(express.static('client'))

    // secured routes
    .use('/api', secured_route)

    // add a user route
    .post('/user', user_api_controller.add_user)

    // delete this in the production
    .use(function(req, res, next) {
        res = allowed_orgins(req, res);
        next();
    })
;

allowed_orgins = function (req, res){
    var allowedOrigins = ['http://localhost:4200', 'http://localhost:8100'];
    var origin = req.headers.origin;
    if(allowedOrigins.indexOf(origin) > -1){
        res.setHeader('Access-Control-Allow-Origin', origin);
        res.header("Access-Control-Allow-Methods", "GET, POST, PATCH, PUT, DELETE, OPTIONS");
        res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, multipart/form-data");
    }
    return res;
}

user_api_controller.js

module.exports.add_user = function (req, res) {
    console.log(req.body.username);
    console.log(req.body.other_parameters);
}

如果我使用,我在控制台上不会打印任何内容form-data,但是当我使用时效果很好x-wwww-form-urlencoded.


我用过multer middle ware,我仍然没有得到任何东西。当我的后端收到一些东西时,中间件就会发挥作用。我尝试获取纯文本字段form-data,我也不明白。这意味着我的后端无法接收所有form-data字段,不仅是文件,还包括文本字段。


这是我的超级简单的表达示例:

const express = require('express')
const fileUpload = require('express-fileupload');

const app = express()
app.use(fileUpload());

app.post('/file-upload', function(req, res, next) {
  console.log(req.body.msg);
  console.log(req.files);
  res.send('ok');
  next();
});

app.listen(3000, function () {
  console.log('Example app listening on port 3000!')
})

抱歉,我不使用邮递员,但我使用curl它对我有用:

curl http://localhost:3000/file-upload \
  -H "Content-Type: multipart/form-data" \
  -F "file=@/YourDir/YourFile.txt" \
  -F "msg=MyFile"

因此,您可以尝试、测试它、了解要点并使用此curl 命令来使用您的应用程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 NodeJS 中允许表单数据 的相关文章

  • Node.js 每个用户一个会话

    如何防止我的用户同时从两个设备登录我的系统 因此 如果用户从计算机登录 当他从不同的计算机登录时 首先会自动关闭会话 不需要使其实时 我使用node js express js mongoose passport connect mongo
  • 简单、安全的API认证系统

    我有一个简单的 REST JSON API 供其他网站 应用程序访问我网站的一些数据库 通过 PHP 网关 基本上该服务的工作原理如下 调用 example com fruit orange 服务器返回有关橙子的 JSON 信息 问题是 我
  • Node.js 可读流_read用法

    我了解如何在 Node 的 new 中使用可写流Streams2库 但我不明白如何使用可读流 举个例子 一个流包装器围绕dgram module var dgram require dgram var thumbs twiddle func
  • Express.js Passport认证自动失败跳过策略

    UPDATE 我已将代码从护照本地注册内部移至单独的处理程序 并且运行良好 问题在于 Passport 和本地注册的使用 但我不知道为什么 我使用 Node js Express Passport 进行身份验证和注册设置 这是以前使用过的标
  • 使用Nodejs、Express和AngularJS在浏览器中显示IP

    我正在学习 Nodejs 和 ExpressJS 我正在尝试使用 ExpressJS 和 2 个节点模块 请求IP https www npmjs com package request ip and geoip2 https www np
  • 为什么changeResourceRecordSets没有被授权访问此资源?

    我正在尝试在 Route 53 中创建一条别名类型的新记录 以告诉 Route 53 起诉 CloudFront 来为该站点提供服务 我正在尝试使用以下代码来执行此操作 let options ChangeBatch Changes Act
  • musicbrainz api 获取所有发行组和发行日期

    如何使用 musicbrainz api 在一次调用中获取艺术家的所有发行组和发行日期 我最接近做到这一点的是使用 http musicbrainz org ws 2 release group query arid 494e8d09 f8
  • 如何在 Nodejs - mongodb 搜索中对结果进行排序,但是,通过调用动态方法

    我正在 Nodejs 中开发一个 Web 应用程序 通过 mongo 本机连接器连接到 mongodb 在我的一个 js 文件中 我有一个通用方法来调用 find 或 findOne 操作以从 mongodb 集合中检索我需要的任何内容 如
  • 如何使用 Passport /Facebook 策略/验证 Supertest 请求?

    我使用 Passport js 进行身份验证 Facebook 策略 并使用 Mocha 和 Supertest 进行测试 如何使用 Supertest for Facebook 策略创建会话并发出经过身份验证的请求 这是用户未登录时的示例
  • 如何使用文档客户端更新 dynamodb 中的嵌套列表数据

    我有一个 dynamoDB 表 其中有一个包含 UserId 和列表列表的项目 它看起来像这样 Item UserId abc123 Lists id 1 title My favorite movies topMovies id 1 ti
  • MongooseError:操作 `orders.deleteMany()` 缓冲在 10000 毫秒后超时

    当我运行我的应用程序时npm run seeder然后我面临这个错误 我仔细检查了我的数据库连接 没问题 另外 我检查了我的 ordermodels 文件也没有问题 我用过MongoDB的compass没有任何问题 我不知道为什么显示buf
  • crypto createHMAC 输出根据 Nodejs 版本而有所不同

    我在升级节点版本时遇到加密模块问题 创建的HMAC取决于节点的版本 您将在下面找到重现该问题的代码片段 如果我将密钥编码为 BASE64 或任何 HMAC 不依赖于 node js 版本 如果我将其编码为二进制 则当我更改 Node js
  • 添加元数据到快速路线

    有什么方法可以将元数据添加到 Express 的路线中吗 例如 app get some route function req res some meta data 我正在寻找一种针对我的节点应用程序的 AOP 方法 因此我想通过身份验证和
  • 无法从 Keycloak 获取 oauth 令牌

    我有一个从 Keycloak 获取身份验证的应用程序 我的访问类型是公开的 因此我没有任何客户端密钥 我已授予访问 已启用直接访问补助金 as ON 参考如下 我从邮递员那里收到错误如下 error invalid grant error
  • 使用 Maven 和 Spring REST 配置 Angular 2 项目

    我想将我的小型应用程序从 Angular 1 升级到 Angular 2 我对 Angular 2 和节点配置有点陌生 我的网络应用程序使用 eclipse 和 Maven 问题是我无法使用 Angular 2 进行配置 我应该使用什么目录
  • 角度编译速度慢

    我有一个API in Symfony PHP 我用它来测试postman它就像一个魅力 但当我这样做时ng serve aot optimization应用程序开始构建并且消息compiled successfully 需要一分多钟 当我需
  • 在需要时初始化模块

    我有一个模块 里面有一些初始化代码 加载模块时应执行 init 目前我正在这样做 in the module exports init function config do it in main var mod require myModu
  • 将项目中的node_modules集中到子项目中

    是否可以以在中心点上拥有所需模块的方式配置 grunt 我有以下项目结构 Project subproject subproject subproject 我通过 grunt 构建项目的所有子项目 并且我也可以为自己构建每个子项目 目前 我
  • 将基本的 Node.js 应用程序部署到 openshift 在 git Push 上出现错误

    我使用 openshift 网站上的过程设置了一个默认节点应用程序 在我的 ubuntu 盒子上做了一个 git 克隆 编辑了readme md 做了一次提交 并尝试推送到仓库 出现很多 npm fetch failed 错误 以及很多 E
  • 无论我将其添加到何处,Azure 应用程序服务(节点)CORS 源都无法工作

    Azure CORS 设置似乎根本不起作用 除非我指定 任何和所有请求都将返回 has been blocked by CORS policy Response to preflight request doesn t pass acces

随机推荐

  • 无限循环中的 JavaScript 警报消息

    无限循环中的警报框 在这里我尝试在两个连续字段上放置弹出警报消息 这样它们就不能留空 我知道为什么会发生这种情况 因为当第一个函数的 onblur 事件启动时 它会将焦点放在第二个字段上 当它跳回第一个时 第二个文本字段的 onblur 启
  • AWS SDK S3 node.js 连接到本地 MinIO 服务器

    我有用 Node js 编写的应用程序服务器 它将文件上传到 AWS S3 存储 为此我正在使用https www npmjs com package aws sdk https www npmjs com package aws sdk当
  • 用 Fragment 替换 ViewPager - 然后导航回来

    我有一个最初托管 ViewPager 的活动 连接到 FragmentPagerAdapter 当用户单击 ViewPager 子片段内的项目时 我使用 FragmentTransaction 将空容器视图替换为我想要导航到的新片段 如果我
  • 如何获取所有数字列(嵌套与否)的“.describe()”统计信息?

    获取数据帧 或列表或数组 中任何列的简单描述性统计数据的最佳方法是什么 无论是否嵌套 一种高级 df describe 还包括带有数值的嵌套结构 就我而言 我有一个包含许多列的数据框 有些列的每一行都有一个数字列表 在我的例子中是时间序列结
  • 为什么我必须将 TS 文件导入为 JS 文件?

    我正在使用 WebdriverIO 帮助进行一个测试项目 我们在 TS serting 方面遇到了巨大的困难 因为 TS 转译器似乎可以正确解析 TS 模块 但解析在运行时失败 例如 如果我有一个模块 config config ts ex
  • 找不到模块“lodash”

    今天我尝试了解有关 Google Web Starter Kit 的更多信息 因此我关注了这些说明 https developers google com web fundamentals getting started web start
  • 查找连续的组合[重复]

    这个问题在这里已经有答案了 可能的重复 Python 中的滚动或滑动窗口迭代器 https stackoverflow com questions 6822725 rolling or sliding window iterator in
  • 已取消的邮件图标显示“不支持”

    发送到 Outlook 的已取消邀请电子邮件包含 不支持 附件 这是我用来取消电子邮件邀请的 ics 有人可以帮助我理解我在这里缺少什么吗 PS Gmail 能够解析此 ics 并从日历中删除该事件 BEGIN VCALENDAR VERS
  • 使用 TLS/SSL 保护 Cassandra 通信

    我们希望保护 Cassandra 免受中间人攻击 有没有办法配置 Cassandra 使客户端 服务器和服务器 服务器 复制 通信采用 SSL 加密 谢谢 简短的回答 不 对于客户端 服务器 节俭 151 https issues apac
  • Grails 渲染 PDF 文件

    我正在尝试在网页中呈现 PDF 文件 但使用以下语法时 我得到了一个奇怪的字符组合 render file new File path to file pdf fileName myPdfFile pdf 有谁知道除了上面的行之外我还需要添
  • 如何返回n对括号的所有有效组合?

    def paren n lst for x in range n current string join lst solutions list for i in range len current string 1 close curren
  • 仅使用 GRPC 连接到对话流 StreamingDetectIntent,卡在等待 responseStream.MoveNext

    我正在尝试将 DialogFlow API v2 与 Unity 结合使用 由于 Unity 还没有官方 SDK 所以我使用了 Grpc beta unity SDK 以及使用 Grpc 工具中的 Protobuf 和 protoc 创建的
  • 从底部工作表对话框片段中获取值

    我从片段A开始bottomSheetDialogFragment 我想从该bottomSheetDialogFragment中选择日期 然后将其设置在片段A中 选择日期已经完成 我只想将其获取到片段A中以在某些字段中设置它 我怎样才能得到这
  • git:如何查明某个分支是否有拉取请求?

    我在 git 分支上 有没有办法查看该分支是否有拉取请求 在这种特殊情况下 Atlassian Stash 用于管理拉取请求 当然我可以使用Stash的Web界面来搜索拉取请求 但我也可以仅使用 git 命令行工具从脚本执行此操作吗 Cor
  • Gradle 无法在新的 Android Studio 2.0 中同步我的项目

    我刚刚将 Android Studio 从 1 5 升级到 2 0 即安装了全新版本 升级似乎进行得很顺利 但是当我打开项目时 当 Gradle 同步我的项目时 我遇到了问题 Gradle 同步运行几分钟后 我收到此错误 Failed to
  • 使用 Byte Buddy 拦截对 Java 8 lambda 表达式的调用

    我尝试使用 Byte Buddy 拦截对方法的调用和对 Java 8 lambda 表达式的调用AgentBuilder如下 static final Instrumentation inst ByteBuddyAgent install
  • 求 matplotlib 中绘制的两条曲线之间的面积(fill_ Between area)

    我有一个清单x and y两条曲线的值 两者都有奇怪的形状 而且我没有它们中任何一个的函数 我需要做两件事 绘制它并对曲线之间的区域进行着色 如下图所示 求曲线之间阴影区域的总面积 我可以绘制这些曲线之间的区域并对其进行着色fill bet
  • 如何使用 jQuery 在第二次单击时反转 CSS 动画

    我制作了以下菜单图标 CSS 动画 当我点击它时会触发它 当我使用 jQuery 第二次单击它时 我想使其反向动画 path1 stroke dasharray 33px stroke dashoffset 33px animation l
  • 如何以最佳方式传递元组参数?

    如何以最佳方式传递元组参数 Example def foo Int Int def bar a Int b Int 现在我想传递的输出foo to bar 这可以通过以下方式实现 val fooResult foo bar fooResul
  • 如何在 NodeJS 中允许表单数据

    我最近创建了一个接受文件的 API 我正在尝试使用 Postman 测试 API 如果我使用发出帖子请求x wwww form urlencoded身体类型 一切正常 我得到了所有预期的数据 唯一的问题是它不允许发送文件 如果我使用form