Доступ к элементу HTML из экспресс-js - PullRequest
0 голосов
/ 15 апреля 2019

Я создал пример приложения, используя Express JS для загрузки файла по локальному пути.

app.js

    const express = require("express");
    const app = express();
    const http = require("http").Server(app).listen(3000);
    const upload = require("express-fileupload");

    app.use(upload());

    console.log("Server Started");

    app.get("/", function (req, res) {
    res.sendFile(__dirname + "/index.html");
    }
    )

    app.post("/", function (req, res) {
    if (req.files) {
        //console.log(req.files);
        const file = req.files.filename;
        const filename = file.name;

        file.mv("./upload/" + filename, function (err) {
        if (err) {
            console.log(err);
            res.send("error occured");
        }
        else {
            res.send("Done");
        }
        })
    }
    })

index.html

    <div>
    <h1 style="align-content: center">Upload your file here!</h1>
    </div>
    <div style=" background-color: white;
                padding:64px;
                display:flex;
                align-items:flex-start;
                justify-content: flex-start;
                box-shadow:  0 15px 30px 0 rgba(0, 0, 0, 0.11), 0 20px 15px 0 rgba(0, 0, 0, 0.08);
                box-sizing:border-box">

    <form label="upload" method="post" enctype="multipart/form-data" action="/">
        <label> Enter reference</label>
        <input type="text"></input>
        <br><br>
        <input type="file" name="filename">
        <input type="submit" value="upload">
    </form>
    </div>

Мне нужна помощь для доступа к текстовому содержимому, введенному в input type = "text" из файла app.js. Любая помощь будет оценена.

Ответы [ 2 ]

1 голос
/ 15 апреля 2019

У вас две основные проблемы.

Вы не отправляете данные

Успешными могут быть только элементы управления формы с именами. Что-то должно равняться значению, введенному в.

Дайте ввод имени:

<input type="text" name="foo">

Вы не ищете данные

Тогда используемый вами анализатор тела (Busboy, обернутый в express-fileupload) заполнит объект req.body, чтобы вы могли получить к нему доступ через req.body.foo.

Asides

  • Конечный тег для <input> элементов запрещен в HTML. Используйте валидатор: https://validator.nu/
  • Без атрибута for или элемента управления внутри него метка бесполезна. См. это руководство
0 голосов
/ 15 апреля 2019

Вы должны задать атрибут name для поля type=text.Затем вы можете получить доступ к полю, используя имя.Предположим, вы установили его как <input type="text" name="user_input"></input>.Теперь из вашего app.post вы можете получить к нему доступ как req.body.user_input.

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