Файл не загружается в Express JS с помощью Multer - PullRequest
0 голосов
/ 05 февраля 2020

Я создаю API, используя express JS. Теперь у меня есть маршрутизатор, который будет использоваться для загрузки изображения с помощью multer .

Вот мой маршрутизатор:

const multer = require('multer');

module.exports = (app) => {
  const DIR = './public/';

  const storage = multer.diskStorage({
    destination: (req, file, cb) => {
      cb(null, DIR);
    },
    filename: (req, file, cb) => {
      cb(null , file.originalname);
    }
  });

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

  // I have also tried this but not working
  // const upload = multer({ dest: 'uploads/' });

  app.post('/upload', upload.single('image'), (req, res, next) => {
    res.status(201).json({
      message: "File uploaded successfully"
    });
  });
}

Теперь из моего приложения reactjs Я звоню этому маршрутизатору, используя ax ios, например:

const headers = {
  "Content-Type": "multipart/form-data"
}
const body = new FormData();
body.append('image', this.state.selectedCategoryImage);
axios.post('http://localhost:3000/upload', body, { headers }).then((res) => {
  console.log(res);
}).catch((err) => {
  console.log(err);
});

В приведенном выше коде this.state.selectedCategoryImage является выбранным изображением из тега html <input>.

Теперь, когда я вызываю этот API, я получаю ответ «Файл успешно загружен», но я не могу увидеть загруженное изображение в каталоге publi c. Мое изображение не загружается.

Пожалуйста, кто-нибудь может мне помочь, в чем проблема?

1 Ответ

1 голос
/ 06 февраля 2020

Передать файл Объект не URL

URL.createObjectURL(file) // it return file url that you can use to show file preview

Для загрузки файла отправьте актуальный файл в формате ios API, полученный из файла

var file = event.target.files[0]; // return actual file

таким образом он действительно отправляет объект файла.

...