gpt4 book ai didi

javascript - 为什么 multer 看不到我的发布请求中的任何文件?

转载 作者:行者123 更新时间:2023-12-03 06:44:17 26 4
gpt4 key购买 nike

我有两个 Node 服务器。一个正在尝试读取文件,另一个正在发送文件。我的服务器设置如下

.post(upload.array('test'), function (req, res) {

if (!Array.isArray(req.files)) {
res.status(400).json({success: false, err: 'Must have test(s))'});
return;
}

var files = req.files; <-- This is always null

我的客户看起来像

  var http = require('request-promise');
var request = require('request');
var fs = require('fs');
var FormData = require('form-data');

var form = new FormData();

tests.forEach(function(testName){
form.append('test', fs.createReadStream(__dirname+'/tests/'+testName));
});

var options = {
method: 'POST',
uri: 'https://' + name +'/rest/api',
rejectUnauthorized: false,
timeout: 2000,
form: form,
};

return http(options);

但是服务器永远无法找到这些文件。响应总是显示错误:必须进行测试。

任何人都可以帮助我找出我的客户端做错了什么吗?

最佳答案

form 选项适用于 urlencoded 表单。对于多部分表单,您需要设置 formData 选项。此外,您不需要显式使用 form-data 模块。示例:

var requestPromise = require('request-promise');
var fs = require('fs');

var formTests = new Array(tests.length);
for (var i = 0; i < tests.length; ++i)
formTests[i] = fs.createReadStream(__dirname + '/tests/' + tests[i]);

var options = {
method: 'POST',
uri: 'https://' + name +'/rest/api',
rejectUnauthorized: false,
timeout: 2000,
formData: {
tests: formTests
}
};

return requestPromise(options);

关于javascript - 为什么 multer 看不到我的发布请求中的任何文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37818663/

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