Получить пользовательский ввод из формы html и записать его в текстовый, CSV или другой файл базы данных (express. js, node.js, html) - PullRequest
0 голосов
/ 06 марта 2020

У меня есть веб-сайт, где пользователь может запросить статью, на которой он хочет увидеть статью. Я хотел бы сохранить входные данные в файл на стороне сервера (не сохраненный на компьютере пользователя), чтобы я мог видеть, что пользователи хотят читать.

Код сервера (express . js, node.js):

var express = require('express');
var app = express();

app.set('trust proxy', true)

//setting middleware
app.use(express.static('/', {index:"/seriousindex.html"})); //Serves resources from public folder
console.log(__dirname);

app.use(express.static(__dirname+"/resources/css"));
app.use(express.static(__dirname+"/resources/js"));
app.use(express.static(__dirname+"/resources/audio"));
app.use(express.static(__dirname+"/resources/visual"));

app.get('/', (req, res)=> {
    res.sendFile('/seriousindex.html', {root:__dirname});
});

app.get('/*', function (req, res) {
    console.log(req.originalUrl);
    console.log(req.ip.split(':').pop());
    res.sendFile(__dirname + req.originalUrl.replace("?", ""));
});

PORT = 9001
app.listen(PORT, () => {
 console.log(`Server is listening on port: ${PORT}`);
})

Форма ввода (HTML):

<label>
    Enter a car you want to see info on here: 
    <form>
        <input type = "form" id = "requestinput" placeholder = "Write here"></input>
        <input type = "submit" method = "POST" onclick = "/submit"></input>
    </form>
</label>    

Я бы предпочел ответьте на node.js или HTML вместо php, но если скрипт php работает, я все равно могу его использовать. Существует много кода, который я скопировал из StackOverflow, поэтому ожидайте несоответствия в моем коде. Помощь приветствуется.

1 Ответ

0 голосов
/ 06 марта 2020

Обновлено! Вам потребуется добавить дополнительный модуль bodyParser, который является промежуточным программным обеспечением, помогающим анализировать входящие тела запросов. Извините, я только что это понял!

...express()

var bodyParser = require('body-parser')

app.use(bodyParser.urlencoded({ extended: true }))
app.use(bodyParser.json())

app.post('/car', (req, res) => {
...

В элементе вашей формы ввода вам нужно будет указать атрибут "действие". Обновлено! Кроме того, вы должны добавить атрибут "name" в поле, чтобы данные были помечены таким ключом, например: {"requestinput": "honda"}

<label>
    Enter a car you want to see info on here: 
    <form action="/car" method="POST"> 
        <input type ="text" name="requestinput" placeholder="Write here"></input>
        <input type = "submit"></input>
    <!-- This onclick is used to call a function inside the <script> of the html. In your case, the html has no function inside <script></script> so it does nothing -->
    </form>
<label>

тогда ваше приложение должно иметь маршрут с именем '/ car' для получения входных данных

app.post('/car', (req, res)=>{
    console.log('Data', req.body.requestinput) // changed to body
    // save the data here
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...