Невозможно получить функцию загрузки файлов, работающую с nodejs и express - PullRequest
0 голосов
/ 05 мая 2020

У меня есть форма с enctype, установленным на multipart form-data, которая имеет один ввод для загрузки файла и другие поля ввода текста. Я действительно вижу в почтовом запросе, что форма отправляется как составная часть с загруженным файлом. Я пробовал использовать multer и express -fileupload. Пробовал все разные способы, которые я мог попробовать из других потоков stackoverflow, связанных с этим, но я просто не могу получить файл в req.files. Это всегда не определено. Я не использую промежуточное ПО. Я просто использую парсер тела, который, как я знаю, не анализирует составные данные. Есть ли пример того, как заставить загрузку файла работать с другими полями формы, используя текущие версии узла и express?

1 Ответ

0 голосов
/ 05 мая 2020

Вы можете попробовать:

Установить express и multer

npm install express multer

приложение. js файл:

const express = require('express');
const app = express();
const multer = require('multer');


// dest -> which tells Multer where to upload the files
const upload = multer({dest:'uploads/'}).single("avatar");


app.post("/profile", (req, res) => {
   upload(req, res, (err) => {
    if(err) {
      res.status(400).send("There is a problem!");
    }
    res.status(200).json({file: req.file});
  });
});

app.listen(3000, () => { 
    console.log('Server is runnig on port 3000');
});

И запустите сервер:

node app.js

В адресной строке Postman установите этот url: http://localhost:3000/upload-image, и вы можете загрузить файл в Postman и проверить ответ.

Также вы можете загрузить файл в браузере без Postman.

<form action="/profile" method="post" enctype="multipart/form-data">
  <input type="file" name="avatar" />
</form>

подробнее: express с Multer do c

...