猿问

当表单设置为 enctype='multipart/form-data' 时

所以我正在使用基本的 node.js+express 制作这个登录身份验证应用程序。因此,当我从注册页面获取值(姓名、电子邮件等)时,我正在使用 express-validator 验证这些值。但是,当注册页面表单具有 enctype='multipart/form-data' 时,我得到的每个值都未定义(名称、电子邮件等)。但是当我删除 enctype='multipart/form-data' 时,值就很好了!!

那么有什么解决方案吗?我只是 Node.js 的初学者。

(PS 我需要 enctype='multipart/form-data' 因为我在注册时上传了个人资料图片)

(PS 在代码中,我删除了中间件以显示仅 register.jade 及其路由的最小代码)

我在没有使用enctype='multipart/form-data'的情况下已经成功注册,但是这里我无法上传图片。

(PS使用multer进行文件上传)

./app.js

var createError = require('http-errors');

var express = require('express');

var path = require('path');

var cookieParser = require('cookie-parser');

var bodyParser = require('body-parser');

var logger = require('morgan');

var expressValidator = require('express-validator');

var session = require("express-session");

var passport = require("passport");

var localStratergy = require("passport-local").Strategy;

var multer = require("multer");

var upload = multer({dest: './uploads'});

var flash = require("connect-flash");

var bcrypt = require("bcryptjs");

var moongo = require("mongodb");

var mongoose = require("mongoose");

var db = mongoose.connection;


var indexRouter = require('./routes/index');

var usersRouter = require('./routes/users');

const { check, validationResult } = require('express-validator');

var app = express();


app.use('/', indexRouter);

app.use('/users', usersRouter);



module.exports = app;


开心每一天1111
浏览 226回答 1
1回答

呼唤远方

您使用'multipart/form-data'防止 Express 解析其他表单字段的值。解决此问题的最简单方法是使用解析多部分表单的中间件,并让您可以访问字段和图像。有几个这样的中间件包,每个都有自己的支持/文档/记录:multer,打杂,多方等等我用的多,在过去的几个项目,没有问题,但也有新的软件包。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答