Expo SDK 43,未找到适合 ph-upload:// 的 URL 请求处理程序
Expo SDK 43, No suitable URL request handler found for ph-upload://
将 Expo SDK 版本从 41.0.0 升级到 43.0.0 后,我无法将图片上传到服务器。错误描述:No suitable URL request handler found for ph-upload://A354049E-57C1-4478-B5C0-1DF56886F1AD
。我注意到,在错误描述中我看到 ph-upload://
,但如果我记录我的照片,它包含:"uri":"ph://A354049E-57C1-4478-B5C0-1DF56886F1AD","name":"IMG_3702.JPG","type":"photo"
。区别是 ph-upload://
和 ph://
.
这是我的代码:
const onSubmitPress = async () => {
await setLoadingIndicator(true);
let formData = new FormData();
formData.append('title', textTitle);
formData.append('description', textDescription);
formData.append('latitude', latitude);
formData.append('longitude', longitude);
formData.append('photoAuthor', photoAuthor);
formData.append('textAuthor', textAuthor);
formData.append('landscapeType', landscapeType);
formData.append('region', region);
route.params?.data?.map((image, index) =>
formData.append(`photo[]`, {
uri: image.uri,
name: image.filename,
type: image.mediaType,
}));
route.params.data = undefined;
const jwtToken = await SecureStore.getItemAsync('JWT');
let responseTypes = await fetch('https://beautiful-places.ru/api/upload_place', {
method: 'POST',
headers: {
'Content-Type': 'multipart/form-data;',
'API-Access-Key': '******',
'Authorization': 'Bearer ' + jwtToken
},
body: formData
})
}
升级之前一切都按预期工作。
在我的例子中,我提供了错误类型的图像,它以某种方式与 expo ver 一起工作。 41,但在版本中。 43 它不起作用。此代码工作正常:
import mime from "mime"; //mime library helps to check type of image.
let formData = new FormData();
formData.append('title', textTitle);
formData.append('description', textDescription);
formData.append('latitude', latitude);
formData.append('longitude', longitude);
formData.append('photoAuthor', photoAuthor);
formData.append('textAuthor', textAuthor);
formData.append('landscapeType', landscapeType);
formData.append('region', region);
photos?.map((image, index) =>
formData.append(`photo[]`, {
uri: image.uri,
name: image.uri.substring(image.uri.lastIndexOf('/') + 1, image.uri.length),
type: mime.getType(image.uri), // after this change problem has gone
})
);
const jwtToken = await SecureStore.getItemAsync('JWT');
let responseTypes = await fetch('https://beautiful-places.ru/api/upload_place', {
method: 'POST',
headers: {
'Content-Type': 'multipart/form-data',
'API-Access-Key': 'SomeKey',
'Authorization': 'Bearer ' + jwtToken
},
body: formData
})
将 Expo SDK 版本从 41.0.0 升级到 43.0.0 后,我无法将图片上传到服务器。错误描述:No suitable URL request handler found for ph-upload://A354049E-57C1-4478-B5C0-1DF56886F1AD
。我注意到,在错误描述中我看到 ph-upload://
,但如果我记录我的照片,它包含:"uri":"ph://A354049E-57C1-4478-B5C0-1DF56886F1AD","name":"IMG_3702.JPG","type":"photo"
。区别是 ph-upload://
和 ph://
.
这是我的代码:
const onSubmitPress = async () => {
await setLoadingIndicator(true);
let formData = new FormData();
formData.append('title', textTitle);
formData.append('description', textDescription);
formData.append('latitude', latitude);
formData.append('longitude', longitude);
formData.append('photoAuthor', photoAuthor);
formData.append('textAuthor', textAuthor);
formData.append('landscapeType', landscapeType);
formData.append('region', region);
route.params?.data?.map((image, index) =>
formData.append(`photo[]`, {
uri: image.uri,
name: image.filename,
type: image.mediaType,
}));
route.params.data = undefined;
const jwtToken = await SecureStore.getItemAsync('JWT');
let responseTypes = await fetch('https://beautiful-places.ru/api/upload_place', {
method: 'POST',
headers: {
'Content-Type': 'multipart/form-data;',
'API-Access-Key': '******',
'Authorization': 'Bearer ' + jwtToken
},
body: formData
})
}
升级之前一切都按预期工作。
在我的例子中,我提供了错误类型的图像,它以某种方式与 expo ver 一起工作。 41,但在版本中。 43 它不起作用。此代码工作正常:
import mime from "mime"; //mime library helps to check type of image.
let formData = new FormData();
formData.append('title', textTitle);
formData.append('description', textDescription);
formData.append('latitude', latitude);
formData.append('longitude', longitude);
formData.append('photoAuthor', photoAuthor);
formData.append('textAuthor', textAuthor);
formData.append('landscapeType', landscapeType);
formData.append('region', region);
photos?.map((image, index) =>
formData.append(`photo[]`, {
uri: image.uri,
name: image.uri.substring(image.uri.lastIndexOf('/') + 1, image.uri.length),
type: mime.getType(image.uri), // after this change problem has gone
})
);
const jwtToken = await SecureStore.getItemAsync('JWT');
let responseTypes = await fetch('https://beautiful-places.ru/api/upload_place', {
method: 'POST',
headers: {
'Content-Type': 'multipart/form-data',
'API-Access-Key': 'SomeKey',
'Authorization': 'Bearer ' + jwtToken
},
body: formData
})