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

Скажем, у меня есть модель 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 ]

0 голосов
/ 22 января 2019

Попытка сделать что-то подобное.Но загрузка не удалась даже без привязки файла к модели.Как ни странно, ответ «УСПЕХ», но ничего не загружается в папку загрузки 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!');
  });
0 голосов
/ 18 января 2019

Оказалось, что мне нужно добавить некоторую дополнительную информацию к клавише 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. Я не использовал его, и это, кажется, ни на что не влияет. Обратите внимание, если это необходимо.

...