说我有一个模型Restaurant
,我想上传图像并将其链接到模型。
从documentation开始,这应该分两个步骤进行:
当前,在创建实体并尝试执行步骤2后,它失败了。 注意:图像是从React-Native image picker
获得的这是我在做什么:
const data = new FormData();
data.append('files', image.uri);
data.append('refId', id);
data.append('ref', 'Restaurants');
data.append('field', 'Logo');
我看到的是图像没有上传。此外,从Strapi端进行调试,我将所有这些数据的请求视为fields
。
我正在使用文档中提到的FormData
,我缺少什么?
答案 0 :(得分:1)
原来,我需要向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
。
再说一遍,在documentation中,还有另一个称为source
的键。我没有使用它,似乎没有任何影响。请注意是否需要。
答案 1 :(得分:0)
尝试做类似的事情。但是,即使没有将文件链接到模型,上传也会失败。奇怪的是,响应为“ SUCCESS”,但没有任何内容上传到Strapi上传文件夹。我想念什么?我的代码(这里我只是尝试从Internet上保存一个随机文件)如下:
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!');
});