Express Multer проверяет поля перед загрузкой - PullRequest
0 голосов
/ 10 ноября 2018

Я видел это: NodeJS Multer проверяет поля перед загрузкой , но это не работает. Я попытался сделать поле проверки перед загрузкой в ​​течение нескольких дней, и результат не работает. потому что мутлер не может этого сделать?

Я использую MERN: MongoDB, React, Express, Node

enter image description here

Я хочу проверить эти данные в Form-data: dataMurid перед загрузкой изображения. Есть ли другой способ преодолеть это? Может быть, с помощью другой библиотеки? и, пожалуйста, дайте мне код примера.

Маршрут

// @route buat edit/create murid baru
router.post('/datasiswa/create',(req, res,next) => {
    upload(req,res,(err)=>{

        let request = JSON.parse(req.body.newMurid);
        // upload(req.body.data.data, res, (err) => {
        //     console.log(req.body.data.data);
        // });
        const { errors, isValid } = validateMuridInput(request);

        // Check validation
        if (!isValid) {
            return res.status(400).json(errors);
        }
        const muridFields = {};
        if (request.tempatLahir) muridFields.tempatLahir = request.tempatLahir;
        if (request.jenisKelamin) muridFields.jenisKelamin = request.jenisKelamin;
        if (request.nis) muridFields.nis = request.nis;
        if (request.nama) muridFields.nama = request.nama;
        if (request.tanggalLahir) muridFields.tanggalLahir = request.tanggalLahir;
        if (request.namaAyah) muridFields.namaAyah = request.namaAyah;
        if (request.namaIbu) muridFields.namaIbu = request.namaIbu;
        if (request.noTelepon) muridFields.noTelepon = request.noTelepon;
        if (request.hpSiswa) muridFields.hpSiswa = request.hpSiswa;
        if (request.hpIbu) muridFields.hpIbu = request.hpIbu;
        if (request.hpAyah) muridFields.hpAyah = request.hpAyah;
        if (request.alamat) muridFields.alamat = request.alamat;

        Murid.findOne({ nis: request.nis })
            .then((murid) => {
                if (murid) {
                    errors.nis = 'NIS ini sudah terdaftar';
                    return res.status(400).json(errors);
                } else {

                    const newMurid = new Murid(muridFields);

                    newMurid.save()
                        .then((murid) => {
                            res.json(murid);
                        })
                        .catch((err) => {
                            console.log(err);
                        });


                }
            })
    });


});

Функция загрузки

const multer = require('multer');
const path = require('path');

// UPLOAD IMAGE

// Set Storage engine
const storage = multer.diskStorage({
    destination: './public/uploads/',
    filename: function (req, file, callback) {
        callback(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname));
    }
});

// Init upload 
let upload = multer({
    storage: storage,
    limits:{fileSize:1000000}, //file size dalam bit
}).fields([{ name: 'fotoDisplay' }, { name: 'newMurid' }]);

1 Ответ

0 голосов
/ 10 ноября 2018

С помощью multer в вашем req.file у вас есть все поля, относящиеся к файлу.

var multer = require('multer')
    var upload = multer({ dest: 'uploads/' })
    import fs from 'fs-extra'

    router.post('/register', upload.single('avatar'), (req, res, next) => {
        return fs.readFile(req.file.path)
                .then(content => {
                    // The content of the file
                })
    }

req.file имеет mimetype и многое другое, что вы можете проверить

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