Невозможно загрузить и отправить изображение на сервер (ReactJS и JavaScript)

#javascript #node.js #reactjs

#javascript #node.js #reactjs

Вопрос:

Я пытаюсь включить опцию загрузки изображения в мое приложение (React на лицевой стороне и NodeJS на сервере). Проблема, с которой я сталкиваюсь, заключается в том, что я не могу отправить файл на сервер. Я видел другие вопросы на этом сайте и учебные пособия на других сайтах, но я не могу найти, что я делаю неправильно, поэтому я надеюсь, что вы можете, пожалуйста, помогите мне.

Это часть моего кода React:

 export default class DisplayPicture extends React.Component {
  constructor(props) {
    super(props);
    // etc
  }

  onImageChange = (event) => {
    if (event.target.files amp;amp; event.target.files[0]) {
      const img = event.target.files[0];
      const formData = new FormData();
      formData.append("image", img);

      this.service
        .uploadPicture(formData) // API call through a service
        .then((backAnswer) => console.log(backAnswer))
        .catch((err) => console.log(err));
    }
  };

  render() {
    return (
      <div>
        <p>Please, upload an image</p>
        <input type="file" name="image" onChange={this.onImageChange} />
      </div>
    );
  }
}
  

Однако, когда я смотрю на то, что служба отправляет на сервер, это пустой объект, и сервер, очевидно, получает то же самое в req.body и «неопределенный» при поиске req.file.

Я знаю, что обычно загружаются файлы с помощью формы, но я уже пробовал и получил тот же результат, поэтому я поделился более короткой версией.

Заранее спасибо!!

Комментарии:

1. Попробуйте formData.append('image', img, img.name); вместо formData.append('image', img); . В моем проекте я использую formData.append('file', file, file.name) , и это работает.

2. @PavloMyroniuk Я только что попробовал, и у меня все еще возникает та же проблема, поскольку параметр filename является необязательным. Спасибо за предложение, хотя!