Как справиться с ответом с помощью формы действий? - PullRequest
0 голосов
/ 21 октября 2018

У меня есть форма, и из-за загрузки файла я не могу обработать отправку с помощью функции onClick +, мне нужно указать действие в качестве атрибута формы.Но после акции я хочу обработать ответ.Как заработать то, что я хочу?Код:

app.post('/register', (req, res) => {
    const {email, name, password, passwordConfirm} = req.body;
    let image;
    if(password === passwordConfirm){
        const hash = bcrypt.hashSync(password);
        if(req.files){
            image = req.files.image;
            image.mv('../public/images/' + image.name, err => {
                if(err){console.log(err)}
            });
        }
        db('users')
        .insert({
            email,
            hash,
            username: name,
            profimg: image.name || ""
        })
        .returning('*')
        .then(user => {
            res.json(user[0]);
        })
        .catch(err => res.status(400).json('unable to register'))
    } else {
        res.status(400).json("Passwords aren't matching")
    }
})
<form ref='uploadForm' 
            id='uploadForm' 
            action='http://localhost:3001/register' 
            method='post' 
            encType="multipart/form-data">
                <div className="inputs">
                    <input 
                    onChange={this.onNameChange}
                    type="text" 
                    name="username"  
                    placeholder="Username"/>
                    <input 
                    onChange={this.onEmailChange}
                    type="email" 
                    name="email"  
                    placeholder="E-mail"/>
                    <input 
                    onChange = {this.onPasswordChange}
                    type="password" 
                    name="password"  
                    placeholder="Password"/>
                    <input 
                    onChange = {this.onPasswordConfirmationChange}
                    type="password"
                    name="passwordConfirm"  
                    placeholder="Confirm Password"/>
                    <input type="file" name="image" />
                </div>
                <button type="submit">
                    Register
                </button>
            </form>

Это React и Node.

1 Ответ

0 голосов
/ 21 октября 2018

Express не может разобрать multipart / form-data отдельно или с помощью пакета body-parser.Вам необходимо установить пакет, например multer или busboy .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...