gpt4 book ai didi

javascript - 如何使用node.js请求模块发送文件?

转载 作者:太空宇宙 更新时间:2023-11-03 22:26:28 24 4
gpt4 key购买 nike

我正在尝试使用 API 来更新另一台使用 Node.js 的服务器上的列表。对于最后一步,我需要发送包含 csv 文件的 POST。在 API 中,他们在 FormData 下列出我需要一个名为 file 的 Key 和一个 Binary Upload 的值,然后请求的正文应由 listname: name 和 file: FileUpload 组成。

function addList(token, path, callback) {

//Define FormData and fs
var FormData = require('form-data');
var fs = require('fs');

//Define request headers.
headers = {
'X-Gatekeeper-SessionToken': token,
'Accept': 'application/json',
'Content-Type': 'multipart/form-data'
};

//Build request.
options = {
method: 'POST',
uri: '{URL given by API}',
json: true,
headers: headers
};

//Make http request.
req(
options,
function (error, response, body) {
//Error handling.
if (error) { callback(new Error('Something bad happened')); }

json = JSON.parse(JSON.stringify(response));
callback.call(json);
}
);

//Attempt to create form and send through request
var form = new FormData();
form.append('listname', 'TEST LIST');
form.append('file', fs.createReadStream(path, { encoding: 'binary' }));
form.pipe(req);};

我是 html 和 css 前端 javascript 的老手,但这是我第一次尝试后端 Node.js。我不断收到的错误是:TypeError: dest.on is not a function

据我所知,这与我使用 form.pipe(req) 的方式有关,但我找不到告诉我适当用法的文档。如果您没有直接的答案,我们将不胜感激您指出正确的文档。

最佳答案

问题是您没有将请求实例传递到管道调用中,而是传递请求模块本身。引用您的 req(...) 调用的返回值并传递它,即

//Make http request.
const reqInst = req(
options,
function (error, response, body) {
//Error handling.
if (error) { callback(new Error('Something bad happened')); }

json = JSON.parse(JSON.stringify(response));
callback.call(json);
}
);

//Attempt to create form and send through request
var form = new FormData();
...
form.pipe(reqInst);

关于javascript - 如何使用node.js请求模块发送文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45485640/

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