Страпи: Как загрузить изображение и связать его с моделью?
Скажи у меня модель Restaurant
и я хочу загрузить изображение и связать его с моделью. Из документации это должно происходить в два этапа:
- Создать новую сущность
- Загрузить и изображение ссылки
В настоящее время после создания сущности и попытки выполнить шаг 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!');
});