Ошибка 500 Загрузка изображения в strapi с помощью Axios

#reactjs #axios #strapi

#reactjs #аксиос #strapi #axios

Вопрос:

Мне нужно загрузить изображение в Strapi. У меня есть таблица с именем book и тремя полями: b_type, b_num, b_image. Однако код состояния равен 500, но без нажатия кнопки b_image он равен 200.

 let file
    const ImageUpload = () =>{
        let box = document.querySelector('.popup_win')
        let uploadField = document.querySelector('.upload')
        uploadField.addEventListener('change', (e) =>{
            file = e.currentTarget.files[0]
            checkType(file)
        })
     }
const finish = ()=>{
        const form = new FormData()
        form.append('b_image', file)
        form.append('b_num', 3)
        form.append('b_type', 'student')

        axios.post('http://localhost:1337/books', form, {
            headers: {'Content-Type': 'multipart/form-data'}
        })
        .then((response) => {
            console.log(response.data)

        })
        .catch((e) => {
            console.log(e)
        })
        document.querySelector('.popup').style.display='none'
    }
  

Ответ №1:

Вот документация о загрузке файла, которая может вам помочьhttps://strapi.io/documentation/3.x.x/guides/upload.html#file-upload.

Итак, сначала вам нужно создать свою Book запись без вашего изображения.

И затем вы должны загрузить свои файлы и указать запись, которую вы хотите связать.

Таким образом, для этого будет 2 запроса.

Вот пример https://strapi.io/documentation/3.x.x/guides/upload.html#examples Мы связываем изображение с существующей статьей.

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

1. В примере не выполняется два запроса, и есть возможность создать при вводе: strapi.io/documentation/developer-docs/latest/plugins/… СПАСИБО ЗА STRAPI КСТАТИ!

Ответ №2:

Потребовалось некоторое время, чтобы разобраться, но вот как я это сделал:

 const submitUpload = e => {
  e.preventDefault();

  const formData = new FormData(e.target);

  axios.post("http://localhost:1337/images", {})
    .then(res => {
      console.log(res);

      formData.append('refId', res.data.id);

      axios.post(`http://localhost:1337/upload`, formData, {
        headers: { 'Content-Type': 'multipart/form-data' },
      })
        .then(res => {
          console.log(res);
        })
        .catch(err => {
          console.log(err);
        });
    })
    .catch(err => {
      console.log(err);
    });
}

return (
  <form id='form' onSubmit={e => submitUpload(e)}>
    <input type="file" name="files" />
    <input type="text" name="ref" value="image" />
    <input type="text" name="field" value="image" />
    <input type="submit" value="Submit" />
  </form>
)
  

Здесь приведены значения ref и refId входных значений https://strapi.io/documentation/3.x.x/guides/upload.html#examples.