无法使用expo和react本机将图像上传到节点js服务器

bf1o4zei  于 2023-01-09  发布在  React
关注(0)|答案(1)|浏览(107)

每当我尝试将表单数据或文件从本机代码发送到服务器时,在本机控制台中无法获取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文件上传,但没有工作。

wh6knrhe

wh6knrhe1#

Expo返回的URI是对设备内存上图像数据的引用,您应该上传base64或二进制数据,具体取决于后端支持的数据类型。
为了简单起见,我建议为expo-image-picker启用base64-https://docs.expo.dev/versions/latest/sdk/imagepicker/#imagepickerasset

相关问题