Я успешно загрузил файлы вместе с полями формы на сервер узлов из моего приложения для 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) .