У меня есть состояние:

  const [file, setFile] = React.useState()

Вот мой setState:

   const fileselectedHandler = (event: any): void => {
    setFile((event.target.files[0]))
  }

У меня есть функция, которая загружает изображение, и всякий раз, когда я пытаюсь передать FormData новые данные, я получаю эту ошибку:

Argument of type 'undefined' is not assignable to parameter of type 'string | Blob'. TS2345

Вот сама моя функция:

    const uploadPicture = (e:any) : void => {
    e.preventDefault()
    const data = new FormData()
    data.append('avatar',file)
    console.log('--------data', data);
    currentUser.map((user:any)=>{
      axios.post(`http://localhost:4001/upload/${user.id}`,data, {
        headers: {
          'Content-Type': 'multipart/form-data'
        }
      })
        .then((res) => {
          window.location.reload(false);
          console.log('--------res', res);
        })
        .catch((err)=>{
          console.log('--------err', err);
        })
    })
  }

Любые предложения о том, как это исправить, пожалуйста?

0
Nika Roffy 30 Авг 2020 в 01:51

2 ответа

Лучший ответ

В этом сценарии вам необходимо загрузить его, создав объект Blob. У меня была аналогичная проблема, и это сработало для меня.

    const data = new FormData()
    data.append('avatar',new Blob([file], { type: file.type }), file.name)
    
1
Shubhaw Kumar 29 Авг 2020 в 23:11

Кроме того, в вашем React.useState() отсутствует параметр. Я не уверен, что это что-то сломает, но вы не предоставляете функции значение по умолчанию.

1
user10817159 30 Авг 2020 в 14:02