Nodejs 多选 内容 传不上来
Nodejs 多选 内容 传不上来
<form action=“http://127.0.0.1:3000/dopost” method=“post” enctype=“multipart/form-data”>
<input type="checkbox" name="hobby" value="睡觉" />睡觉
<input type="checkbox" name="hobby" value="吃饭" />吃饭
<input type="checkbox" name="hobby" value="足球" />足球
form 表单中默认情况下,nodejs 的 HTTP 模块可以接收到多选[吃饭,喝水]
为了传图片,加上 multipart/form-data 后,多选只接收多选的最后一个参数,比如喝水,不再是数组.
请问如何哪里不对
4 回复
猜了一下是 formidable 的问题,打印原生是有两条数据的,去 github 上看了一下,发现了 issue.
https://github.com/felixge/node-formidable/issues/138
hobby[]
二楼正解,是 name 的错误,多选必须带[]
针对您提到的“Node.js 多选 内容 传不上来”的问题,这通常与前端表单处理或后端接收数据的方式有关。以下是一个简化的示例,展示如何在Node.js中使用Express框架处理多选表单数据。
前端HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Multi-select Form</title>
</head>
<body>
<form action="/submit" method="post">
<label for="options">Choose options:</label>
<select id="options" name="options" multiple>
<option value="option1">Option 1</option>
<option value="option2">Option 2</option>
<option value="option3">Option 3</option>
</select>
<button type="submit">Submit</button>
</form>
</body>
</html>
后端Node.js (Express)
const express = require('express');
const app = express();
const port = 3000;
app.use(express.urlencoded({ extended: true })); // 解析URL编码的数据
app.post('/submit', (req, res) => {
const options = req.body.options; // 获取多选数据
console.log(options); // 输出选中的选项
res.send('Options received: ' + options.join(', '));
});
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}/`);
});
确保您的表单enctype
为application/x-www-form-urlencoded
(这是默认设置,无需额外指定),并且后端使用express.urlencoded({ extended: true })
中间件来解析数据。这样,您应该能够成功上传多选内容。如果问题仍然存在,请检查前端和后端的日志以获取更多信息。