Файлы запросов не определены в файле node.js + Multer - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь создать HTML-форму для загрузки изображения на сервер с Node.js . Я пытался сделать это с Грозный и Multer . В Потрясающе Я получил мой Поля объект нормально, но файловый объект был undefined. В Multer я получаю свой req.body нормально, но req.file равен undefined.

Я пытался сделать то же самое с Грозный и не экспресс, и все работало нормально, но то же самое не работало с Экспресс

вот мой бэкэнд

app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static(publicPath));

const upload = multer({ storage: multer.memoryStorage() });

app.post('/fileupload', upload.single('testFile'), (req, res, next) => {
    const file = req.file;

    if (!file) {
        const error = new Error('Please upload a file');
        error.httpStatusCode = 400;
        return next(error);
    }
    res.send(file);

});

и мой интерфейс

<form class="upload__form" action="/fileupload" method="POST" enctype="multipart/form-data" >
    <input type="file" name="testFile" id="file" accept="image/*">
        <label for="file" class="hover">Choose a file <i class="fas fa-upload"></i> </label>
        <span id="err_msg"></span>
        <div class="tag-input">
            <input placeholder="Type tags..." class="input" type="text" name="query"><button class="search" type="submit"><b>Add <i class="fas fa-arrow-right"></i></b></button>
                <p class="note">*Seperate with commas <i class="far fa-times-circle hover note-close" ></i></p>
</div>
</form>

Код выше с multer , но я также пробовал с Formidale , ничего не изменилось

1 Ответ

0 голосов
/ 18 января 2019

Я попробовал ваш код, и он отлично работает, но вы можете попробовать не использовать промежуточное ПО вместо функции, чтобы узнать, возвращает ли ваш код исключение.

const upload = multer({ storage: multer.memoryStorage() }).single('testFile');
app.post('/fileupload', (req, res, next) => {
    upload(req, res, function (err) {
        if (err || !req.file) {
            // An error occurred while loading the image.
            const error = new Error('Please upload a file')
            error.httpStatusCode = 400;
            return next(error);
        }
        res.send(req.file);
    });
});

Таким образом, вы можете проверить, является ли req.file значением undefined или оно приводит к ошибке в переменной err.

...