Загрузить изображение с реакции на сервер - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь отправить изображение из компонентаactjs на сервер экспресс-узла.

Но мне не удалось, пожалуйста, помогите!

У меня есть форма с несколькими входами и просмотр ввода.

Я устанавливаю значение для состояния onChange.

Для файла выберите:

uploadInput = (e) => {
  let {options} = this.state;
  options[e.target.name] = e.target.files[0];
  this.setState({options:options});
}

И обработку формы отправьте здесь:

saveCustomize = (e) => {
    e.preventDefault();
   Api.postMultipartData("settings_popups/saveCustomize", 
    {_id:this.state.popup._id,this.state.options},function(){
      // Api.reload()
    });
  }

Для запросавызов, я использую Запрос npm: Запрос Npm

Если я использую данные формы:

saveCustomize = (e) => {
    e.preventDefault();
    var formData = new FormData(document.querySelector("#dataForm"));
    Api.postMultipartData("settings_popups/saveCustomize", 
      {_id:this.state.popup._id,options:formData},function(){
      // Api.reload()
    });
  }

Отправьте пустой объект.FormData не работает для меня, как, я застрял с этим.Все время получаю пустой предмет.Пожалуйста, объясните мне, как его использовать.

Другой способ, я пытался:

saveCustomize = (e) => {
    e.preventDefault();
    var formData = new FormData(document.querySelector("#dataForm"));
    formData.append("logo_image", this.state.options.logo_image);
    formData.append("bg_image", this.state.options.bg_image);

    Api.postMultipartData("settings_popups/saveCustomize",{_id:this.state.popup._id,options:formData},function(){
      // Api.reload()
    });
  }

Запрос вызова API-функции:

static async postMultipartData(api = null,body = {}, responseCallback = "", login = true) {
    var options = {
      url:Path.nodeServer + api,
      form:{data:body}
    };

    if(login == true){
      options["headers"] = {
        'Access-Token': await Api.logToken(),
        'Web-Token': await Api.webToken()
      }
    }

    Reqest.post(
      options,
      async function(error, response, body){
        var body = JSON.parse(response.body);
        await Api.setFlash(body);
        responseCallback(body);
      }
    );

  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...