我一直在试图解决这个问题几天了。我正在尝试在相同请求中执行文件上传和POST数据。我已经在PHP中完成了这个工作,但现在我想在Node.js中完成这项工作。我虽然可能是与标题或服务器设置的东西,但没有任何工作。节点 - 多部分/表单数据上传文件,但没有数据
我怎么到这里:我开始使用文件上传使用busboy
,它的作品完美。使用form-data
身体Content-Type: Multipart/form-data
和正常工作:
app.post('/api/v1/files/test', function (req, res, next) {
var busboy = new Busboy({ headers: req.headers });
// Listen for event when Busboy finds a file to stream.
busboy.on('file', function (fieldname, file, filename, encoding, mimetype) {
console.log(filename);
});
req.pipe(busboy);
});
这将返回控制台和作品文件名。
(。忽略了一个事实我有身体apiKey
这是我固定的下一件事)
如果我添加一个console.log(req.body);
,它将返回{}
。 我错过了什么?为什么身体是空的?我已经通过req
并找不到我的密钥的任何实例。
服务器设置文件看起来像这样:
... requires ...
// App
const app = express();
// File related
app.use(busboy());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json()); // maybe screwing it up?
... then path setup, and listen ...
如果你还是不明白,我想要做的事:
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="text" name="apiKey" />
<input type="file" name="file" />
<button type="submit>Done</button>
</form>
这是它是什么样子的PHP:
<?php
$apiKey = $_POST['apiKey'];
$file = $_POST['files']['file'];
?>
你看看Multer:https://github.com/expressjs/multer,它很简单,开门见山 –