每当我尝试将表单数据或文件从本机代码发送到服务器时,在本机控制台中无法获取assets[0].fileSize和assets[0].fileName。我的React本机代码为:
const { status } = await Permissions.askAsync(Permissions.MEDIA_LIBRARY);
if (status !== "granted") {
// Handle permission denied
return;
}
const result = await ImagePicker.launchImageLibraryAsync({
mediaTypes: ImagePicker.MediaTypeOptions.Images,
});
console.log(result);
/**
I am getting this output from result:
{
assets: [
{
assetId: "1610",
base64: null,
duration: null,
exif: null,
height: 1840,
rotation: null,
type: "image",
uri: "file:///data/user/0/host.exp.exponent/cache/ExperienceData/%2540anonymous%252Fhelo-c554b96a-1355-4a71-8550-01d96488539b/ImagePicker/21bc87ec-4534-40d8-a86d-bd676ad9cbb2.jpeg",
width: 3264,
},
],
canceled: false,
cancelled: false,
};
**/
我使用expo-image-picker来选择图片,在服务器端我使用multer().any()来处理文件。
我已经尝试了一些更多的软件包:xhr文件上传,但没有工作。
1条答案
按热度按时间wh6knrhe1#
Expo返回的URI是对设备内存上图像数据的引用,您应该上传
base64
或二进制数据,具体取决于后端支持的数据类型。为了简单起见,我建议为
expo-image-picker
启用base64-https://docs.expo.dev/versions/latest/sdk/imagepicker/#imagepickerasset