node.js - 如何使用 hapi 测试文件上传?
问题描述
我的 hapi 路由中有这种有效负载格式,它只接受multipart/form-data
数据,输出设置为stream
:
payload: {
maxBytes: 1024,
output: 'stream',
parse: true,
allow: 'multipart/form-data',
}
我想测试那条路线,我的有效载荷是这样的:
const FD = new FormData();
FD.append('field1', 'value');
FD.append('field2', 'value');
hapi 注入方法如下所示:
const res = await server.inject({
method,
url,
headers: {
...
'Content-Type': 'multipart/form-data; boundary=--SEPARATION--',
},
payload: FD,
});
我正进入(状态
无效的多部分负载格式
我也尝试使用Steam
对象设置流,但它不起作用。我也尝试发送一个File
对象。
此时我只想向不会导致错误的路由发送一些东西。不必是 FormData。只要我可以添加一些自定义字段以进一步测试它,路由将接受的任何内容都可以。
提前致谢。
解决方案
据我所知,FormData
node.js 中不存在,所以我假设您正在使用该form-data
模块?
在这种情况下,您需要分别请求form-data
缓冲区和标头,如下所示:
const FormData = require('form-data');
const FD = new FormData();
FD.append('field1', 'value');
FD.append('field2', 'value');
const response = await server.inject({
method,
url,
headers: {
<your other headers>
...FD.getHeaders(),
},
payload: FD.getBuffer(),
});
如果要测试发送文件,还需要提供filename
属性 toappend(…)
以便服务器正确解码二进制数据:
const fileContent = <any Buffer>;
FD.append('form_file_property', fileContent, {filename: 'a testfile'});
推荐阅读
- php - woocommerce 的 Wordpress 重定向错误
- ruby - 像 PHP 中的内联 RubyDocumentor 行?
- android - 如何使用 rxJava 收集表单输入、评估和有条件地转到另一个视图或发布数据
- python-3.x - 递归函数不更新python中的列表
- javascript - 不需要的 React 组件重新渲染?
- java - 将对象从一个活动传递到另一个活动以更改其值
- c++ - 不能 push_back 包含指向向量的 ofstream 指针的类
- javascript - 带有 dom 元素的 chrome 扩展更新徽章
- javascript - 使用 express 在模块化 node.js 应用程序中创建同步调用和传递值
- mercadopago - Mercadopago API 如何获取当前订阅客户的订阅或计划