一、如何获取复选框中的值?
可能是因为常年写PHP的缘故,一想到获取复选框的值时,就认为,把相同name的复选框命名为name[]
(如爱好hobby[])
例如:
<input type="checkbox" name="hobby[]" value="1"> 撸代码
<input type="checkbox" name="hobby[]" value="2"> 运动
<input type="checkbox" name="hobby[]" value="3"> 看美女
而在express中你通过:req.param.hobby是获取不到的
你复选框的名称必须是一个字符串,不能是一个数组
<input type="checkbox" name="hobby" value="1"> 撸代码
<input type="checkbox" name="hobby" value="2"> 运动
<input type="checkbox" name="hobby" value="3"> 看美女
这样就能获取了
二、在使用express-session模块时获取不到session设置的值?
一般按照express-session的说明,一般就这样使用:(在启动文件中,一般是app.js)
这几个参数必填,不然会报警告,发现设置了session,但是获取不了
app.use(session({secret:'shixinke', resave:true, saveUninitialized:false}))
原来它有一个cookie的属性,cookie属性有一个默认的secure的属性,默认值为undefined,这个值是什么意思呢?
每个cookie是否是TLS/SSL这种安全连接(一般用于HTTPS),因此,我们一般的http协议设置为false,即:
app.use(session({secret:'shixinke', resave:true, saveUninitialized:false,cookie:{secure:false}}))
三、使用multer上传文件时,无法获取其他post的值?
如果你的表单有上传文件域,即表单的enctype为mulipart/form-data,那么你不能使用req.param这种方式来获取提交的参数
要在解析表单的方法回调函数中获取表单提交的参数(fields)
应该使用如下:
function uploadFile(req, res) {
var form = new formidable.IncomingForm(); //创建上传表单
form.encoding = 'utf-8'; //设置编辑
form.uploadDir = 'public/uploads/images' ; //设置上传目录
form.keepExtensions = true; //保留后缀
form.maxFieldsSize = 2 * 1024 * 1024 : 20 * 1024 *1024; //文件大小
form.parse(req, function(err, fields, files) {
//这里的fields这个参数就是提交的参数对象
});
}