问题标签 [busboy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
678 浏览

javascript - busboy 未定义 connect-busboy 与 expres

我正在使用 expressjs 4.12.3,并尝试连接到 connect-busboy,但根据请求我无法获取 req.busboy 对象,它显示“未定义”我的简单代码如下:

我已经初始化 busboy 模块,将其分配给应用程序,同时发送 content-length: "5276" content-type:'application/x-www-formurlencoded' 作为标题。

我究竟做错了什么??

0 投票
2 回答
3637 浏览

node.js - 使用 busboy (nodejs) 上传多个文件并发出相关响应对象

我正在使用 busboy 模块上传文件。它适用于一个文件。但是,当我尝试上传多个文件时,它会引发以下错误。

我知道为什么它会抛出错误,但我无法找出解决方案。以下是我的代码片段。

我知道下面的代码行会抛出错误,这是因为在多个文件的情况下,这行代码会执行两次导致错误。

如何跟踪“ req.busboy.on('file', function (fieldName, file, fileName)”的多个事件,以便在所有文件处理完成后只有我应该发送响应?

请帮忙。

0 投票
1 回答
4001 浏览

javascript - 使用 busboy 从 Express 应用程序中的 bodyParser() 迁移?

作为 Nodejs 的新手,我直接开始编写一个简单的应用程序,而没有真正阅读良好的安全实践。我刚刚发现使用bodyParser()所有路由实际上是一件坏事,因为它允许使用多部分文件进行 DOS 攻击

推荐的修复方法是仅根据路由加载特定模块。即,对于多部分文件上传,使用multipart. 对于没有文件上传的常规 POST(即文本表单提交),使用express.json(), express.urlencoded().

或者另一种选择是将busboyconnect-busboy一起使用。但我感到困惑的是如何指定哪个路由应该处理多部分数据,哪个不应该处理?否则,我不会有与 with 相同的问题bodyParser吗?

此外,busboy文档说它不处理GET

所以,我更加困惑如何paramsGET. 我认为bodyParser这是为我做的,所以我可以使用req.params.

例如,我将如何使用这个简单的应用程序迁移bodyParser()到:busboy/connect-busboy

0 投票
0 回答
581 浏览

javascript - 使用 Node 和 connect-busboy 处理带有表单文本字段的用户文件上传?

在 Nodejs、sequelize 和 connect-busboy 中处理文件上传和验证文本字段/插入到 db 的标准做法是什么?

例如,如果我们有一个用户个人资料表单,最终用户必须输入姓名、电子邮件并上传少量文件。

当用户提交表单时,服务器上的步骤是,(1)验证文本字段(2)保存到数据库中的用户表(3)将文件保存到磁盘(4)使用文件路径更新用户行

在半伪代码中,我想象的是:

但是,我不确定如何将此逻辑流程调整为connect-busboy

我有正确的想法吗?如果是这样,我该如何调整验证、用户创建/更新connect-busboy

如果我走得很远,那么进行数据库验证、创建/更新用户字段以及包括用户上传的标准做法是什么?

0 投票
1 回答
1259 浏览

javascript - busboy 不会收到上传的文件

我的表格很简单。它使用ng-flow来处理文件上传:

选择图像后,ng-flow将对目标路由进行 POST。看起来图像是发送的,因为请求有效负载有很多东西,比如:

图片不是很大(~1MB)

在 nodejs 方面(使用快递):

req.busboy返回一个充满东西的对象,但req.busboy.on('file'...永远req.busboy.on('field'...)不会触发。

为什么 busboy 看不到我的字符串和图像?

0 投票
1 回答
2116 浏览

node.js - 如果 mime 类型无效,如何在 busboy 中停止上传和重定向?

我是 Node.js 的新手,我正在使用 Express 和 Busboy-Connect 创建一个简单的文件上传表单,仅适用于 wav 文件。这是我正在尝试做的事情: - 开始上传 - 如果 mimetype 不是 wav,则重定向到错误页面 - 否则:将文件写入服务器并重定向回来。

如果 mimetype 有效,则一切正常,但如果不是,我无法重定向,浏览器只是挂起并最终超时。我对它的理解是浏览器不想重定向,因为它正在等待上传完成,但是如何在我的 js 代码中取消上传?我可以解决这个问题并编写文件,然后如果它不是正确的 mimetype 则将其删除,但我认为这样做有点愚蠢,我宁愿找到一种方法来触发将停止它并立即重定向的事件。这是我的应用程序代码(片段):

谁能指出我正确的方向?谢谢您的帮助 !

0 投票
1 回答
6528 浏览

node.js - busboy - 有没有办法在所有文件上传后发送响应?

我正在尝试使用 node.js 作为后端和 angular.js 作为前端将文件上传到服务器。我为此使用 express 4 + busboy。我在前端有一个表格,我应该在其中显示我正在上传的所有文件。因此,如果我有 3 个文件并单击上传,则 angular 应将这些文件发布到 node.js 并在获得响应后,用这三个文件刷新表。这是我在 Angular 中使用的函数:

这是来自node.js:

问题是,如果我上传三个文件,一旦上传第一个文件,node.js 就会发送响应,因此表仅在上传的第一个文件时更新,如果我刷新页面,则会出现其余文件. 我认为问题在于节点中的这一行:return req.pipe(busboy); 如果我删除该行,则发布响应会保持等待很长时间并且没有任何反应,我认为这是一个异步问题,有人知道是否有办法仅在所有文件都上传后才发回响应?谢谢

0 投票
2 回答
14500 浏览

node.js - 将上传的文件流式传输到 HTTP 请求

我的目标是接受上传的文件并使用Wistia Upload API将其流式传输到Wistia。我需要能够向 HTTP 请求添加字段,并且我不希望文件接触磁盘。我正在使用NodeExpressRequestBusboy

下面的代码有两个console.log语句。第一个返回[Error: not implemented],第二个返回[Error: form-data: not implemented]。我是 Node 流媒体的新手,所以我可能在做一些根本错误的事情。任何帮助将非常感激。

0 投票
3 回答
3309 浏览

node.js - 使用 node.js 、 needle 、 busboy/multer 将文件从一台服务器发布到另一台服务器

我想将一个小图像从一台服务器移动到另一台服务器(两个运行节点)。当我搜索时,我还没有找到足够的东西。帖子仍未得到答复。

当我开始试验时,我在第一台服务器上写了以下内容:

这部分似乎正在工作,因为我可以在同一服务器中写入数据(使用 fs.writeFile)重新创建 img。

现在,当我试图在另一台服务器上处理帖子时,我遇到了问题。

服务器2:

这样我在文件中得到一个空对象,在正文中得到以下内容: { 'headers[Content-Type]': 'application/x-www-form-urlencoded', 'headers[Content-Length]': '45009' }

我想我可以使用 busboy 作为替代方案,但我无法让它工作。任何建议,教程都将受到欢迎。

0 投票
5 回答
4747 浏览

javascript - 节点 Busboy 中止上传

我正在使用busboy,将上传的文件写入缓冲区并对其进行一些验证(宽度、高度和文件大小)。一旦我发现上传有问题,我一生都无法弄清楚如何中止/停止流。

例如,如果我想要允许的最大文件大小为 500kb,我会在上传时跟踪缓冲区的大小,如果大小超过 500kb,我想中止。

这是我的代码的简化版本。