Как мы можем отправлять данные в MySQL, если для формы установлено значение enctype = "multipart / form-data" в node.js? - PullRequest
0 голосов
/ 02 августа 2020

Этот enctype = "multipart / form-data" блокирует отправку моих данных на mysql, но это необходимо для работы multer . Я пытаюсь сохранить имя файла изображения в базе данных, в то время как файл будет храниться в моем каталоге проекта ./uploads с использованием структуры multer . Я пробовал разные запросы, но ничего не вышло. Я надеюсь, что вы, ребята, столкнулись с той же проблемой, что и моя, пожалуйста, уделите немного времени. Заранее благодарим.

image

приложение. js

const path = require('path');
const express = require('express');
const multer = require('multer');
const ejs = require('ejs');
const bodyParser = require('body-parser');
const mysql = require('mysql');
const app = express();

const DIR = './assets/uploads/featured-img';

// Set The Storage Engine
let storage = multer.diskStorage({
    destination: function (req, file, callback) {
      callback(null, DIR);
    },
    filename: function (req, file, cb) {
      cb(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname));
    }
});

let upload = multer({storage: storage});

// Set Database Connection
const connection=mysql.createConnection({
    host:'localhost',
    user:'root',
    password:'',
    database:'nodejs_crud'
});

connection.connect(function(error){
    if(!!error) console.log(error);
    else console.log('Database Connected!')
});

//set view file
app.use(express.static('assets'));
app.use(express.static(__dirname + '/assets'));

//set view engine
app.set('view engine', 'ejs');

app.use(bodyParser.json());
// app.use(express.urlencoded({ extended: true }));
app.use(bodyParser.urlencoded({ extend: false}));

app.get('/',(req, res) => {
    let sql = "SELECT * FROM music"
    let query = connection.query(sql, (err, rows) => {
        if(err) throw err;
        res.render('music_index');
    });
});

app.get('/', (req, res) => res.render('music_index'));


app.post('/save',upload.single('featured_img'), function (req, res) {
    let sql = "INSERT INTO `music`(`featured_img`, `title`, `band_name`, `audio`) VALUES ('" + req.body.featured_img + "', '"+req.body.title+"', '"+req.body.band_name+"', '"+req.body.audio+"')";
    let query = connection.query(sql, (err, results) => {
        if(err) throw err;
        res.redirect('/');
    });
});

// Server Listening
const port = 3000;

app.listen(port, () => console.log(`Server started on port ${port}`));

enter image description here

введите описание изображения здесь

1 Ответ

1 голос
/ 03 августа 2020

предложение

ссылка на

ваши данные, вставленные в базу данных, не находятся в объекте req.body, а где-то еще. как объект req.files.file. вы можете распечатать журнал, используя console.log ('req.file' + req.file + 'req.files' + req.files) в вашем приложении. js file

app.post('/save',upload.single('featured_img'), function (req, res) {

    console.log('req.file' + req.file + 'req.files' + req.files)

    let sql = "INSERT INTO `music`(`featured_img`, `title`, `band_name`, `audio`) VALUES ('" + req.body.featured_img + "', '"+req.body.title+"', '"+req.body.band_name+"', '"+req.body.audio+"')";
    let query = connection.query(sql, (err, results) => {
        if(err) throw err;
        res.redirect('/');
    });
});

ссылка

...