Страпи: Как загрузить изображение и связать его с моделью?

Скажи у меня модель Restaurantи я хочу загрузить изображение и связать его с моделью. Из документации это должно происходить в два этапа:

  1. Создать новую сущность
  2. Загрузить и изображение ссылки

В настоящее время после создания сущности и попытки выполнить шаг 2 происходит сбой. Примечание. Изображение получено из средства выбора изображений React-Native.

Вот что я делаю:

      const data = new FormData();
      data.append('files', image.uri);
      data.append('refId', id);
      data.append('ref', 'Restaurants');
      data.append('field', 'Logo');

Я вижу, что изображение не загружено. Кроме того, отладка со стороны Strapi, я вижу запрос со всеми этими данными как fields,

я использую FormData как упомянуто в документации, что мне не хватает?

2 ответа

Решение

Оказалось, что мне нужно добавить дополнительную информацию в files ключ, чтобы FormData распознать его как файл, и Strapi может обработать загрузку файла. Вот что работает:

      const data = new FormData();
      data.append('files', {
        uri: logo.uri,
        name: `test.jpg`,
        type: 'multipart/form-data'
      });
      data.append('refId', id);
      data.append('ref', 'Restaurants');
      data.append('field', 'Logo');

Что действительно важно, так это type: 'multipart/form-data,

Еще одно замечание, в документации есть еще один ключ source, Я не использовал его, и это, кажется, ни на что не влияет. Обратите внимание, если это необходимо.

Пытаюсь сделать что-то подобное. Но загрузка не удалась даже без привязки файла к модели. Как ни странно, ответ "УСПЕХ", но ничего не загружается в папку загрузки Strapi. Что мне не хватает? Мой код (здесь я просто пытаюсь сохранить случайный файл из Интернета) ниже:

    const bodyFormData = new FormData();
    const token = localStorage.getItem('token');
    bodyFormData.append('files', {
        uri: "https://www.w3schools.com/bootstrap/newyork.jpg",
        name: "test.jpg",
        type: "multipart/form-data"
      });
    // console.log(data.Attachment.rawFile.preview);
    axios.post( 'http://localhost:1337/upload',
    bodyFormData,
    {
      headers: {
          Authorization: `Bearer ${token}`,
          'Content-Type': 'multipart/form-data'
      }
    }
  ).then(function(response){
    console.log('SUCCESS');
  })
  .catch(function(){
    console.log('Fail!');
  });
Другие вопросы по тегам