gpt4 book ai didi

javascript - 如何使用 node.js 中的请求以多部分形式数据发送对象

转载 作者:数据小太阳 更新时间:2023-10-29 05:57:39 24 4
gpt4 key购买 nike

我正在尝试使用 request 制定一个 POST ,但每当我尝试将 to 对象添加到 formData 时,我总是收到错误消息。

var fs      = require('fs');
var request = require('request');
var file = './test/assets/test.pdf';

var opts = {
url: 'my_service',
method: 'POST',
auth: { user: 'username', password: 'password' },
json: true,
formData: {
front: fs.createReadStream(file),
to: {
name: 'joe bob',
address_1: '123 main st',
...
}
}
};

request(opts, function(err, resp, body) {
console.log(err, body);
});

这里是错误:

/sandbox/project/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js:33
source.on('error', function() {});
^
TypeError: undefined is not a function
at Function.DelayedStream.create (/Users/me/sandbox/project/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js:33:10)
at FormData.CombinedStream.append (/Users/me/sandbox/project/node_modules/request/node_modules/combined-stream/lib/combined_stream.js:43:37)
at FormData.append (/Users/me/sandbox/lproject/node_modules/request/node_modules/form-data/lib/form_data.js:43:3)
at appendFormValue (/Users/me/sandbox/project/node_modules/request/request.js:466:21)
at Request.init (/Users/me/sandbox/project/node_modules/request/request.js:477:11)
at new Request (/Users/me/sandbox/project/node_modules/request/request.js:264:8)
at request (/Users/me/sandbox/project/node_modules/request/index.js:50:10)
at Object.<anonymous> (/Users/me/sandbox/project/test.js:30:1)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)

如果我删除 to 对象,一切正常。

这是为什么 - 我做错了什么?

最佳答案

formData 属性不处理作为值传入的对象。见the documentation .一种解决方案是使用 JSON.stringify

var fs      = require('fs');
var request = require('request');
var file = './test/assets/test.pdf';

var toObj = {
name: 'joe bob',
address_1: '123 main st',
...
};
var opts = {
url: 'my_service',
method: 'POST',
auth: { user: 'username', password: 'password' },
json: true,
formData: {
front: fs.createReadStream(file),
to: JSON.stringify(toObj)
}
};

request(opts, function(err, resp, body) {
console.log(err, body);
});

注意:实际上是 form-data 包,只支持字符串。请求使用表单数据。这是他们的 usage doc其中提到使用“字符串、缓冲区和文件流。”

关于javascript - 如何使用 node.js 中的请求以多部分形式数据发送对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29153534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com