React native 将照片从react本机应用程序上载到strapi api
我最近开始使用strapi。我想从我的应用程序(react native/expo)上传一张照片,但我有一些不理解的错误 首先,我在没有strapi的服务器上测试了照片上传,我没有遇到任何问题,照片已发送React native 将照片从react本机应用程序上载到strapi api,react-native,upload,expo,strapi,React Native,Upload,Expo,Strapi,我最近开始使用strapi。我想从我的应用程序(react native/expo)上传一张照片,但我有一些不理解的错误 首先,我在没有strapi的服务器上测试了照片上传,我没有遇到任何问题,照片已发送 const form = new FormData(); form.append('files', {uri: photoSource.uri, name: filename, type: 'image/jpeg'}); const requestConfig = { method: '
const form = new FormData();
form.append('files', {uri: photoSource.uri, name: filename, type: 'image/jpeg'});
const requestConfig = {
method: 'POST',
headers: {
"Authorization": "Bearer ey...",
"Content-Type": "multipart/form-data;",
},
"body": form
};
const response = await fetch("http://myserveradresse/upload", requestConfig);
let responseJson = await response.json();
console.log(responseJson);
当我切换到Strapi时,它不再工作了。当我看到有必要发送缓冲区时,我尝试:
form.append('files', new Buffer(photoSource, 'base64'));
但它不起作用
在此之前,我还尝试使用其他方法发送图片:FileSystem.uploadAsync
,xmlhttprequest
但什么都不管用。Strapi总是向我发送相同的错误:
Object {
"data": Object {
"errors": Array [
Object {
"id": "Upload.status.empty",
"message": "Files are empty",
},
],
},
"error": "Bad Request",
"message": "Bad Request",
"statusCode": 400,
}
我想我一定是误解了什么,但我不知道是什么。内容类型也需要添加边界,这将由fetch(希望其他玩家)自动添加,所以不要在标题中添加内容类型。您还需要将文件作为blog发送,并将filename作为append中的第三个元素发送。第三个因素是FormData如何知道它实际上是一个文件,这就是为什么strapi对它从“文件”中得到的东西感到不安 以下是我如何在用户上成功打包我的个人资料照片:
let formData = new FormData();
let imgBlob = await (await fetch(photo.uri)).blob()
formData.append(
"files", imgBlob, filename)
formData.append("refId",user.id)
formData.append("source","users-permissions")
formData.append("ref","user")
formData.append("field","profilePhoto")
const requestConfig = {
method: 'POST',
headers: {
'Authorization': `Bearer ${store.getState().jwt}`
},
body: formData,
};
众所周知,Strapi很难上传图像,因此下一步可能仍然会出现500个错误,但这是一个正确的方向。内容类型也需要添加边界,这将由fetch(希望其他玩家)自动添加,所以将内容类型保留在标题之外。您还需要将文件作为blog发送,并将filename作为append中的第三个元素发送。第三个因素是FormData如何知道它实际上是一个文件,这就是为什么strapi对它从“文件”中得到的东西感到不安 以下是我如何在用户上成功打包我的个人资料照片:
let formData = new FormData();
let imgBlob = await (await fetch(photo.uri)).blob()
formData.append(
"files", imgBlob, filename)
formData.append("refId",user.id)
formData.append("source","users-permissions")
formData.append("ref","user")
formData.append("field","profilePhoto")
const requestConfig = {
method: 'POST',
headers: {
'Authorization': `Bearer ${store.getState().jwt}`
},
body: formData,
};
众所周知,Strapi很难上传图像,因此下一步可能仍然会出现500个错误,但这是一个正确的方向