我无法在 node.js

问题描述

我正在尝试创建一个简单的表单,它可以使用 Node.js 一起上传文件(pdf 和图像)和文本。尽管如此,我不想将 pdf 文件保存到 MysqL 数据库,而是希望它保存在我的内部存储“./uploads”文件夹中。我用过 npm foridable、mv 和 multer,但没有任何效果,有人知道为什么吗?

这是我的 html 表单

                <form action="/auth/registerEvent" method = "POST">
                <h5> Enter Your Event information</h5>
                    <div class="form-group">
                      <label for="eventName">Event Name</label>
                      <input type="text" class="form-control" id="eventName" name="eventName" placeholder="Event Name">
                    </div>
                
                    <div class="form-group">
                      <label for="eventDescription">Description</label>
                      <textarea class="form-control" id="eventDescription" name="eventDescription" placeholder="Event Description: No more than 200 words" rows="3"></textarea>
                    </div>

                    <div class="form-group">
                        <label for="eventPoster">Poster</label>
                        <input type="file" class="form-control" id="eventPoster" name="eventPoster" enctype="multipart/form-data" accept=".jpg,.png,.jpeg">
                    </div>

                    <div class="form-group">
                        <label for="eventProposal">Sponsor Proposal</label>
                        <input type="file" class="form-control" id="eventProposal" name="eventProposal" enctype="multipart/form-data" accept=".pdf">
                    </div>
                    <br>
                
                    <button type="submit">Submit</button>
                  </form>

这是我的 app.js

const express = require('express');
const path = require('path');
const app = express();
const MysqL = require('MysqL');
const dotenv = require('dotenv');

dotenv.config({path: './.env'}); // connect to .env

// set views folder
app.set('view engine','html');
app.engine('html',require('hbs').__express);


// set the directory to css and js
const publicDirectory = path.join(__dirname,'./public');
app.use(express.static(publicDirectory));

// Parse URL encoded bodies (as sent by HTML Form)
app.use(express.urlencoded({extended: false}));
// Parse JSON bodies (as sent by API clients)
app.use(express.json());

// Define routes
app.use('/',require('./router/pages.js'));
app.use('/auth',require('./router/auth.js'));

// connect to MysqL
const db = MysqL.createConnection({
    host: process.env.LOCALHOST,user: process.env.USER,password: process.env.PASSWORD,database: process.env.DATABASE,});

db.connect( (err) => {
    if (err) console.log(err);
    else console.log('Database is connected');
} )



// laptop server
app.listen(3000,(req,res)=>{
    console.log('Server is running at localhost:3000');
});

最后是“auth.js”

const formidable = require('formidable');
const fs = require('fs');
const MysqL = require('MysqL');

const db = MysqL.createConnection({
    host: process.env.LOCALHOST,});




exports.registerEvent = (req,res) => {
    const {
        eventName,eventInstitution,// eventStartDate,eventEndDate,eventAddress,eventDescription,eventPoster,eventProposal,// eoName,eoPhone,eoEmail
    } = req.body;

    if (req.url === "/registerEvent") {
        const form = new formidable.IncomingForm();
        form.parse(req,function (err,fields,files) {
            const oldpath = eventPoster.path;
            const newPath = './uploads' + eventPoster;
            fs.rename(oldpath,newPath,function (err) {
                if (err) throw err;

            });
        })
    }

    // db start
    db.query('INSERT INTO registerevent SET ? ',{
        EventName: eventName,Institution: eventInstitution,// StartDate: eventStartDate,// EndDate: eventEndDate,Address: eventAddress,Description: eventDescription,// Poster: eventPoster,// Proposal: eventProposal,// ContactName: eoName,// PhoneNumber: eoPhone,// Email: eoEmail,},(error,result) => {
        if (error) { console.log(error); }
        else {
            res.statusCode = 302;
            res.setHeader("Location","/Feedback");
            res.end();
        }
    });
    // db end


}

所以当客户输入姓名和地址时,它会转到 sql,并且海报和提案文件将被发送到我的“/uploads”目录。请帮忙

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...