Загрузка multipart с multer в nodejs - PullRequest
0 голосов
/ 28 марта 2019

Я успешно загрузил файлы вместе с полями формы на сервер узлов из моего приложения для Android, однако, похоже, у меня нет возможности получить доступ к телу запроса из цикла multer's, я могу получить доступ только к телу запроса в multer's конфигурация, внутри блока fileFilter. Проблема в в том, что эта область находится внутри цикла multer's при чтении нескольких файлов, поэтому моя логика кода здесь не может быть записана.

req.body - это undefined закомментированная область AAAAAAAAAAAAAAAAAAAA , где к ней следует получить доступ до сохранения файлов , но к ней можно получить доступ внутри блока fileFilter, который находится внутри цикла .

let fs = require('fs');
let express = require('express');
let path = require('path');
let multer = require('multer');


// Set The Storage Engine
const storage = multer.diskStorage({
    destination: './files/uploads/',
    filename: function (req, file, cb) {
        cb(null, /*file.fieldname + '-' +*/ generateString(6) + path.extname(file.originalname));
    }
});
// Init Upload
const upload = multer({
    storage: storage,
    limits: {fileSize: 1000000},
    fileFilter: function (req, file, cb) {
        let body = JSON.parse(JSON.stringify(req.body));
        //BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
        //THIS IS INSIDE A LOOP
        console.log("REQUEST BODY " + JSON.stringify(body));
        if (body.hasOwnProperty('opne')) {
            return cb('Stopped');
        } else {
            checkFileType(file, cb);
        }
    }
}).array('fileToUpload', 12);

// Check File Type
function checkFileType(file, cb) {
    
    // Allowed ext
    const filetypes = /jpeg|jpg|png|gif|xlsx|xls/;
    // Check ext
    const extname = filetypes.test(path.extname(file.originalname).toLowerCase());
    // Check mime
    const mimetype = filetypes.test(file.mimetype);
    console.log(file.mimetype);
    console.log(mimetype);
    console.log(extname);
    if (mimetype && extname) {
        return cb(null, true);
    } else {
        cb('Error: Invalid file type!');
    }
}

app.post('/upload', (req, res) => {
//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    upload(req, res, (err) => {
        if (err) {
            res.status(200).send('Failed ' + err)
        } else {
            if (req.files !== undefined || req.file !== undefined) {
                res.status(200).send('Successful')
            } else {
                res.status(200).send('Filed_')
            }
        }
    });
});

ВОПРОС: Как получить доступ к полям формы вне цикла до сохранения файлов ?.

Причина: Содержимое полей формы содержит данные проверки для определения необходимости сохранения, отклонения или обработки файлов (в случае файлов Excel) .

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